LoginForm.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2019-05-10 23:39
  7. */
  8. namespace api\models\form;
  9. use api\models\User;
  10. /**
  11. * Login form
  12. */
  13. class LoginForm extends \yii\base\Model
  14. {
  15. public $username;
  16. public $password;
  17. /** @var User */
  18. private $_user;
  19. public function rules()
  20. {
  21. return [
  22. [['username', 'password'], 'required'],
  23. ['password', 'validatePassword'],
  24. ];
  25. }
  26. public function validatePassword($attribute, $params)
  27. {
  28. if (!$this->hasErrors()) {
  29. $this->_user = $this->getUser();
  30. if (!$this->_user) {
  31. $this->addError($attribute, '用户名不存在');
  32. return false;
  33. }
  34. if( !$this->_user->validatePassword($this->password) ){
  35. $this->addError($attribute, '密码错误');
  36. return false;
  37. }
  38. }
  39. }
  40. public function attributeLabels()
  41. {
  42. return [
  43. 'username' => '用户名',
  44. 'password' => '密码',
  45. ];
  46. }
  47. public function login()
  48. {
  49. if ($this->validate()) {
  50. $this->_user->generateAccessToken();
  51. if( $this->_user->save(false, ['access_token']) ){
  52. return $this->_user;
  53. }else{
  54. return "false";
  55. }
  56. } else {
  57. return null;
  58. }
  59. }
  60. protected function getUser()
  61. {
  62. if ($this->_user === null) {
  63. $this->_user = User::findByUsername($this->username);
  64. }
  65. return $this->_user;
  66. }
  67. }