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.
		
		
		
		
		
			
		
			
				
					
					
						
							59 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							59 lines
						
					
					
						
							1.4 KiB
						
					
					
				| <?php | |
|  | |
| namespace frontend\models; | |
| use yii\base\Model; | |
| use common\models\User; | |
| use yii\base\View; | |
| use yii\helpers\Security; | |
|  | |
| /** | |
|  * 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 = Security::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; | |
| 	} | |
| }
 | |
| 
 |