PasswordResetRequestForm.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace frontend\forms;
  3. use Yii;
  4. use yii\base\Model;
  5. use common\models\member\Member;
  6. /**
  7. * Password reset request form
  8. */
  9. class PasswordResetRequestForm extends Model
  10. {
  11. public $email;
  12. /**
  13. * {@inheritdoc}
  14. */
  15. public function rules()
  16. {
  17. return [
  18. ['email', 'trim'],
  19. ['email', 'required'],
  20. ['email', 'email'],
  21. [
  22. 'email',
  23. 'exist',
  24. 'targetClass' => '\common\models\member\Member',
  25. 'filter' => ['status' => Member::STATUS_ACTIVE],
  26. 'message' => 'There is no user with this email address.'
  27. ],
  28. ];
  29. }
  30. /**
  31. * @return bool
  32. * @throws \yii\base\Exception
  33. */
  34. public function sendEmail()
  35. {
  36. /* @var $user Member */
  37. $user = Member::findOne([
  38. 'email' => $this->email,
  39. 'status' => Member::STATUS_ACTIVE,
  40. 'merchant_id' => Yii::$app->services->merchant->getId()
  41. ]);
  42. if (!$user) {
  43. return false;
  44. }
  45. if (!Member::isPasswordResetTokenValid($user->password_reset_token)) {
  46. $user->generatePasswordResetToken();
  47. if (!$user->save()) {
  48. return false;
  49. }
  50. }
  51. $subject = 'Password reset for ' . Yii::$app->name;
  52. $template = 'passwordResetToken';
  53. // 发送邮件
  54. return Yii::$app->services->mailer->send($user, $this->email, $subject, $template);
  55. }
  56. }
粤ICP备19079148号