Восстанавливаю пароль. На почту присылается письмо с ссылкой для перехода. Когда переходит, то генерируется новый пароль и отсылается на почту.
Это экшин который вызывает пользователь пройдя по ссылке.
Код: Выделить всё
public function actionNewpasword($salt, $userId )
{
$model = $this->loadModel($userId);// ищу пользователя
$messages = 'Не удалось изменить пароль.';
if($model->salt == $salt) //проверяю код
{
if($model->newpassword($userId)) // вызываю сброс пароля
{
$messages = 'Новый пароль выслан на почту.';
}
}
else
{
$messages = 'Не верный ключ сброса пароля.';
}
$this->render('activate',array(
'mes' => $messages,
));
}
Код: Выделить всё
public function newpassword($userId)
{
$pas = substr(self::generateSalt(), 0, 6); // новый пароль
$user = User::model()->findByPk($userId); // ищем юзера
$user->password = self::hashPassword($pas, $user->salt); // устанавливаем пароль
if($user->save())
{
$body = $pas; // отправляем на почту
$headers="From: ".Yii::app()->params['adminEmail']."\r\nContent-type: text/html; charset=UTF-8\r\nReply-To: {Yii::app()->params['adminEmail']}";
mail($user->username ,"Новый пароль",$body,$headers);
return true;
}
else
return false;
}