This repository has been archived on 2024-12-01. You can view files and clone it, but cannot push or open issues or pull requests.
factuges_web/www/protected/modules/yii-user-master/controllers/RecoveryController.php

67 lines
2.7 KiB
PHP
Raw Normal View History

<?php
class RecoveryController extends Controller
{
public $defaultAction = 'recovery';
/**
* Recovery password
*/
public function actionRecovery () {
$form = new UserRecoveryForm;
if (Yii::app()->user->id) {
$this->redirect(Yii::app()->controller->module->returnUrl);
} else {
$email = ((isset($_GET['email']))?$_GET['email']:'');
$activkey = ((isset($_GET['activkey']))?$_GET['activkey']:'');
if ($email&&$activkey) {
$form2 = new UserChangePassword;
$find = User::model()->notsafe()->findByAttributes(array('email'=>$email));
if(isset($find)&&$find->activkey==$activkey) {
if(isset($_POST['UserChangePassword'])) {
$form2->attributes=$_POST['UserChangePassword'];
if($form2->validate()) {
$find->password = Yii::app()->controller->module->encrypting($form2->password);
$find->activkey=Yii::app()->controller->module->encrypting(microtime().$form2->password);
if ($find->status==0) {
$find->status = 1;
}
$find->save();
Yii::app()->user->setFlash('recoveryMessage',UserModule::t("New password is saved."));
$this->redirect(Yii::app()->controller->module->recoveryUrl);
}
}
$this->render('changepassword',array('form'=>$form2));
} else {
Yii::app()->user->setFlash('recoveryMessage',UserModule::t("Incorrect recovery link."));
$this->redirect(Yii::app()->controller->module->recoveryUrl);
}
} else {
if(isset($_POST['UserRecoveryForm'])) {
$form->attributes=$_POST['UserRecoveryForm'];
if($form->validate()) {
$user = User::model()->notsafe()->findbyPk($form->user_id);
$activation_url = 'http://' . $_SERVER['HTTP_HOST'].$this->createUrl(implode(Yii::app()->controller->module->recoveryUrl),array("activkey" => $user->activkey, "email" => $user->email));
$subject = UserModule::t("You have requested the password recovery site {site_name}",
array(
'{site_name}'=>Yii::app()->name,
));
$message = UserModule::t("You have requested the password recovery site {site_name}. To receive a new password, go to {activation_url}.",
array(
'{site_name}'=>Yii::app()->name,
'{activation_url}'=>$activation_url,
));
UserModule::sendMail($user->email,$subject,$message);
Yii::app()->user->setFlash('recoveryMessage',UserModule::t("Please check your email. An instructions was sent to your email address."));
$this->refresh();
}
}
$this->render('recovery',array('form'=>$form));
}
}
}
}