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

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