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; | 
						|
	} | 
						|
}
 | 
						|
 |