You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					60 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					60 lines
				
				1.4 KiB
			| 
											12 years ago
										 | <?php
 | ||
|  | 
 | ||
|  | namespace frontend\models;
 | ||
|  | use yii\base\Model;
 | ||
|  | use common\models\User;
 | ||
|  | use yii\base\View;
 | ||
|  | use yii\helpers\SecurityHelper;
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * SendPasswordResetTokenForm is the model behind requesting password reset token form.
 | ||
|  |  */
 | ||
|  | class SendPasswordResetTokenForm extends Model
 | ||
|  | {
 | ||
|  | 	public $email;
 | ||
|  | 
 | ||
|  | 	/**
 | ||
|  | 	 * @return array the validation rules.
 | ||
|  | 	 */
 | ||
|  | 	public function rules()
 | ||
|  | 	{
 | ||
|  | 		return array(
 | ||
|  | 			array('email', 'required'),
 | ||
|  | 			array('email', 'email'),
 | ||
|  | 		);
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public function sendEmail()
 | ||
|  | 	{
 | ||
|  | 		if($this->validate()) {
 | ||
|  | 			/** @var User $user */
 | ||
|  | 			$user = User::find(array(
 | ||
|  | 				'email' => $this->email,
 | ||
|  | 				'status' => User::STATUS_ACTIVE,
 | ||
|  | 			));
 | ||
|  | 			if ($user) {
 | ||
|  | 				$user->password_reset_token = SecurityHelper::generateRandomKey();
 | ||
|  | 				if ($user->save(false)) {
 | ||
|  | 					$view = new View(array(
 | ||
|  | 						'context' => \Yii::$app->controller,
 | ||
|  | 					));
 | ||
|  | 
 | ||
|  | 					$fromEmail = \Yii::$app->params['supportEmail'];
 | ||
|  | 					$name = '=?UTF-8?B?' . base64_encode(\Yii::$app->name . ' robot') . '?=';
 | ||
|  | 					$subject = '=?UTF-8?B?' . base64_encode('Password reset for ' . \Yii::$app->name) . '?=';
 | ||
|  | 					$body = $view->render('/emails/passwordResetToken', array(
 | ||
|  | 						'user' => $user,
 | ||
|  | 					));
 | ||
|  | 					$headers = "From: $name <{$fromEmail}>\r\n" .
 | ||
|  | 						"MIME-Version: 1.0\r\n" .
 | ||
|  | 						"Content-type: text/plain; charset=UTF-8";
 | ||
|  | 					mail($fromEmail, $subject, $body, $headers);
 | ||
|  | 					return true;
 | ||
|  | 				}
 | ||
|  | 			}
 | ||
|  | 		}
 | ||
|  | 
 | ||
|  | 		return false;
 | ||
|  | 	}
 | ||
|  | }
 |