Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
CRAP | |
78.95% |
15 / 19 |
| PasswordResetRequestForm | |
0.00% |
0 / 1 |
|
0.00% |
0 / 2 |
5.23 | |
78.95% |
15 / 19 |
| rules | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 1 |
|||
| sendEmail | |
0.00% |
0 / 1 |
4.07 | |
83.33% |
15 / 18 |
|||
| <?php | |
| namespace frontend\models; | |
| use Yii; | |
| use yii\base\Model; | |
| use common\models\User; | |
| /** | |
| * Password reset request form | |
| */ | |
| class PasswordResetRequestForm extends Model | |
| { | |
| public $email; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function rules() | |
| { | |
| return [ | |
| ['email', 'trim'], | |
| ['email', 'required'], | |
| ['email', 'email'], | |
| ['email', 'exist', | |
| 'targetClass' => '\common\models\User', | |
| 'filter' => ['status' => User::STATUS_ACTIVE], | |
| 'message' => 'There is no user with this email address.' | |
| ], | |
| ]; | |
| } | |
| /** | |
| * Sends an email with a link, for resetting the password. | |
| * | |
| * @return bool whether the email was send | |
| */ | |
| public function sendEmail() | |
| { | |
| /* @var $user User */ | |
| $user = User::findOne([ | |
| 'status' => User::STATUS_ACTIVE, | |
| 'email' => $this->email, | |
| ]); | |
| if (!$user) { | |
| return false; | |
| } | |
| if (!User::isPasswordResetTokenValid($user->password_reset_token)) { | |
| $user->generatePasswordResetToken(); | |
| if (!$user->save()) { | |
| return false; | |
| } | |
| } | |
| return Yii::$app | |
| ->mailer | |
| ->compose( | |
| ['html' => 'passwordResetToken-html', 'text' => 'passwordResetToken-text'], | |
| ['user' => $user] | |
| ) | |
| ->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name . ' robot']) | |
| ->setTo($this->email) | |
| ->setSubject('Password reset for ' . Yii::$app->name) | |
| ->send(); | |
| } | |
| } |