Untuk membuat sendiri action change password hal yang saya lakukan adalah :
- Membuat model PasswordForm untuk mendefiniskan attribut beserta rule
- Membuat _formpassword sebagai halaman form
- Membuat changepassword sebagai view, dan
- 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:
Selamat pagi, saya mau bertanya mengenai fungsi parameter yang ada di actionChangepassword.
BalasHapus