ResetPasswordForm.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace frontend\forms;
  3. use yii\base\Model;
  4. use yii\web\UnprocessableEntityHttpException;
  5. use common\models\member\Member;
  6. /**
  7. * 密码重置表单
  8. *
  9. * Class ResetPasswordForm
  10. * @package frontend\models
  11. */
  12. class ResetPasswordForm extends Model
  13. {
  14. public $password;
  15. /**
  16. * @var \common\models\base\User
  17. */
  18. private $_user;
  19. /**
  20. * ResetPasswordForm constructor.
  21. * @param $token
  22. * @param array $config
  23. * @throws UnprocessableEntityHttpException
  24. */
  25. public function __construct($token, $config = [])
  26. {
  27. if (empty($token) || !is_string($token)) {
  28. throw new UnprocessableEntityHttpException('密码重置令牌不能为空.');
  29. }
  30. $this->_user = Member::findByPasswordResetToken($token);
  31. if (!$this->_user) {
  32. throw new UnprocessableEntityHttpException('密码重置令牌错误.');
  33. }
  34. parent::__construct($config);
  35. }
  36. /**
  37. * {@inheritdoc}
  38. */
  39. public function rules()
  40. {
  41. return [
  42. ['password', 'required'],
  43. ['password', 'string', 'min' => 6],
  44. ];
  45. }
  46. /**
  47. * @return bool
  48. * @throws \yii\base\Exception
  49. */
  50. public function resetPassword()
  51. {
  52. $user = $this->_user;
  53. $user->setPassword($this->password);
  54. $user->removePasswordResetToken();
  55. return $user->save(false);
  56. }
  57. }
粤ICP备19079148号