Beranda · Contact Us · Downloads

Yii: Membuat sendiri Action Change Password

Untuk membuat sendiri action change password hal yang saya lakukan adalah :
  1. Membuat model PasswordForm untuk mendefiniskan attribut beserta rule
  2. Membuat _formpassword sebagai halaman form
  3. Membuat changepassword sebagai view, dan
  4. Membuat actionchangepassword sebagai action controller

1. Membuat model PasswordForm. Simpan sebagai /protected/models/PasswordForm.php
    Definisikan attribute beserta rule :
<?php
class PasswordForm extends CFormModel{
    public $oldpass;
    public $newpass;
    public $confirm;
   
    public function rules(){
        return array(
            array('oldpass, newpass, confirm','required'),
        );
    }
   
    public function attributeLabels(){
        return array(
        'oldpass'=>'Password Lama',
        'newpass'=>'Password Baru',
        'confirm'=>'Konfirm Password Baru',
        );
    }
}
?>
2. Membuat _formpassword sebagai halaman form.
    Untuk membuat form ini bisa mellihat/mengcopy dari form lain yang sudah ada.
    Simpan sebagai /protected/views/user/_formpassword.php dan isikan dengan kode berikut ini :
<div class="row">
    <?php echo $form->labelEx($model,'oldpass'); ?>
    <?php echo $form->passwordField($model,'oldpass',
        array('size'=>30));?>
    <?php echo $form->error($model,'oldpass'); ?>
</div>
   
<div class="row">
    <?php echo $form->labelEx($model,'newpass'); ?>
    <?php echo $form->passwordField($model,'newpass',
        array('size'=>30));?>
    <?php echo $form->error($model,'newpass'); ?>
</div>
   
<div class="row">
    <?php echo $form->labelEx($model,'confirm'); ?>
    <?php echo $form->passwordField($model,'confirm',
        array('size'=>30));?>
    <?php echo $form->error($model,'confirm'); ?>
</div>
3. Membuat view changepassword.
    Sama seperti halnya di atas, untuk membuat view ini bisa melihat/mengcopy dari view lain yang 
    sudah ada. Simpan sebagai /protected/views/user/changepassword.php
<?php
$this->breadcrumbs=array(
    'Users'=>array('index'),
    'Change Password',
);
?>

<h1>Change Password</h1>
<?php if(Yii::app()->user->hasFlash('error')): ?>
<div class="flash-error">
    <?php echo Yii::app()->user->getFlash('error'); ?>
</div>
<?php endif; ?>
<?php $this->renderPartial('_formpassword',
array('model'=>$model)); ?>
4. Membuat actionchangepassword
    Untuk membuatnya cukup definisikan actionchangepassword di dalam UserController.
    Tambahkan di dalam /protected/controllers/UserController.php kode di bawah ini :
public function actionChangepassword($username){
    $model = new PasswordForm;
    $modeluser = $this->loadModel(Yii::app()->user->id);
    if (isset($_POST['PasswordForm'])){
        $old = 'Helloword'.sha1($_POST['PasswordForm']['oldpass']);
        $new = 'Helloword'.sha1($_POST['PasswordForm']['newpass']);
        $konfirm = 'Helloword'.sha1($_POST['PasswordForm']['confirm']);
        if ($modeluser->password===$old){
            if ($old!=$new){
                if($new===$konfirm){
                    $modeluser->password=$new;
                    if($modeluser->save()){
                        $this->redirect(Yii::app()->homeUrl);
                    }
                } else{
                    Yii::app()->user->setFlash('error','Silahkan konfirmasi password baru Anda!');
                }
            } else{
                Yii::app()->user->setFlash('error','Maaf, password baru tidak boleh sama dengan password lama!');
            }
        }else{
            Yii::app()->user->setFlash('error','Periksa kembali password lama Anda!');
        }
    }
        $this->render('changepassword',array(
            'model'=>$model,
        ));
}

Silahkan pahami kode di atas :p . Dan berikut beberapa tampilan yang berhasil saya screenshot :





Good Luck!

Artikel keren lainnya:

1 Tanggapan untuk "Yii: Membuat sendiri Action Change Password"

  1. Selamat pagi, saya mau bertanya mengenai fungsi parameter yang ada di actionChangepassword.

    BalasHapus