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