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