LoginForm.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. namespace backend\models\forms;
  3. use backend\models\LoginApi;
  4. use backend\models\MemberIdentity;
  5. use Yii;
  6. use yii\base\Model;
  7. class LoginForm extends Model
  8. {
  9. public $username;
  10. public $password;
  11. public $type;
  12. /**
  13. * @inheritdoc
  14. */
  15. public function rules()
  16. {
  17. return [
  18. [['username', 'password'], 'required'],
  19. [['type'], 'integer'],
  20. [['type'], 'default', 'value' => 1],
  21. ];
  22. }
  23. /**
  24. * @return bool
  25. */
  26. public function login()
  27. {
  28. if ($this->validate()) {
  29. $data = [];
  30. $data['username'] = $this->username;
  31. $data['password'] = $this->password;
  32. $data['type'] = $this->type;
  33. $api = new LoginApi();
  34. $result = $api->loginPost($data);
  35. if ($result['code'] == 1) {
  36. $identity = MemberIdentity::findIdentity($result['data']['id']);
  37. if ($this->type == MemberIdentity::MEMBER_TYPE_ADMIN) {
  38. return Yii::$app->getUser()->login($identity);
  39. } else {
  40. return false;
  41. }
  42. } else {
  43. if (is_array($result['message'])) {
  44. $this->addErrors($result['message']);
  45. } else {
  46. $this->addError('username', $result['message']);
  47. }
  48. }
  49. }
  50. return !$this->hasErrors();
  51. }
  52. }