LoginForm.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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_USER) {
  38. return Yii::$app->getUser()->login($identity);
  39. } elseif ($this->type == MemberIdentity::MEMBER_TYPE_IB) {
  40. return Yii::$app->get('userIb')->login($identity);
  41. } else {
  42. return false;
  43. }
  44. } else {
  45. if (is_array($result['message'])) {
  46. $this->addErrors($result['message']);
  47. } else {
  48. $this->addError('username', $result['message']);
  49. }
  50. }
  51. }
  52. return !$this->hasErrors();
  53. }
  54. }