I am currently working on changing user password but it keeps on telling that I entered a wrong password. Anyone who could figure it out? I am a newbie here so please help me.
This is my UserTableController:
public function actionChangePassword($id)
{
$this->layout = 'column1';
$id = Yii::app()->user->id;
$tempModel = UserTable::model()->findByPk($id);
$model = new UserTable;
$this->performAjaxValidation($model);
if(isset($_POST['UserTable']))
{
$model->setScenario('changePassword');
$model->attributes=$_POST['UserTable'];
if(md5(md5($model->oldPassword) . Yii::app()->params["salt"]) === $tempModel->password)
{
$tempModel->password = $model->hashPassword($model->newPassword);
$tempModel->save();
Yii::app()->user->setFlash('success', 'Password updated successfully.');
}
else
{
Yii::app()->user->setFlash('error', "Wrong Password");
}
$this->redirect(array('changePassword', 'id'=>$id));
}
$this->render('changePassword',array(
'model'=>$model,
));
}
And this is my Usertable model:
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('first_name, middle_name, last_name, username, password, sector, user_role', 'required'),
//array('rePassword', 'required', 'except'=>'update'),
array('oldPassword, newPassword, rePassword', 'required', 'on'=>'changePassword'),
//array('rePassword', 'required', 'on'=>'register, changePassword'),
array('rePassword', 'compare', 'compareAttribute'=>'password', 'on'=>'changePassword', 'message'=>'Passwords must match.'),
array('rePassword', 'compare', 'compareAttribute'=>'newPassword', 'on'=>'changePassword', 'message'=>'It does not match with New Password'),
array('password, rePassword, oldPassword, newPassword', 'length', 'min'=>4),
array('first_name, middle_name, last_name, username, password', 'length', 'max'=>20),
array('sector, user_role', 'length', 'max'=>100),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('first_name, middle_name, last_name, username, password, sector, user_role', 'safe', 'on'=>'search'),
);
}
/**
* @return array relational rules.
*/
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
);
}
public function hashPassword($password)
{
return md5(md5($password) . Yii::app()->params["salt"]);
}
public function beforeSave()
{
if($this->rePassword != '')
$this->password = md5(md5($this->rePassword).Yii::app()->params["salt"]);
return true;
}
What do you think is missing?