AuthController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. namespace addons\Store\client\controllers;
  3. use addons\Store\common\models\StoreAdmin;
  4. use backend\controllers\AdminController;
  5. use common\enums\StatusEnum;
  6. use common\helpers\sms\Sms;
  7. use common\models\backend\Admin;
  8. use common\models\mall\Mall;
  9. use common\traits\BaseControllerTrait;
  10. use common\traits\ErrorTrait;
  11. use Yii;
  12. use yii\filters\AccessControl;
  13. use yii\filters\VerbFilter;
  14. use yii\web\Controller;
  15. /**
  16. * 管理员
  17. * @Author bing
  18. * @DateTime 2021-08-11 17:22:39
  19. * @copyright: Copyright (c) 2020 广东七件事集团
  20. */
  21. class AuthController extends Controller
  22. {
  23. public $layout = false;
  24. use ErrorTrait;
  25. use BaseControllerTrait;
  26. public $mall = null;
  27. public $mall_id = 0;
  28. public $store_id = 0;
  29. public $admin = null;
  30. public $enableCsrfValidation = false;
  31. /**
  32. * {@inheritdoc}
  33. */
  34. public function behaviors()
  35. {
  36. return [
  37. 'access' => [
  38. 'class' => AccessControl::class,
  39. 'rules' => [
  40. [
  41. 'actions' => ['login','logout', 'error', 'captcha','register','register-sms-code'],
  42. 'allow' => true,
  43. ],
  44. ],
  45. ],
  46. ];
  47. }
  48. public function actions()
  49. {
  50. return [
  51. 'error' => [
  52. 'class' => 'yii\web\ErrorAction',
  53. ],
  54. 'captcha' => [
  55. 'class' => 'common\components\CaptchaAction',
  56. 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
  57. 'maxLength' => 5, // 最大显示个数
  58. 'minLength' => 5, // 最少显示个数
  59. 'padding' => 5, // 间距
  60. 'height' => 32, // 高度
  61. 'width' => 100, // 宽度
  62. 'offset' => 4, // 设置字符偏移量
  63. 'backColor' => 0xffffff, // 背景颜色
  64. 'foreColor' => 0x2F4F4F, // 字体颜色
  65. ]
  66. ];
  67. }
  68. /**
  69. * 登录
  70. * @Author bing
  71. * @DateTime 2021-08-11 18:45:46
  72. * @copyright: Copyright (c) 2020 广东七件事集团
  73. * @return void
  74. */
  75. public function actionLogin()
  76. {
  77. if (!Yii::$app->store_user->isGuest) {
  78. // 记录行为日志
  79. // Yii::$app->services->actionLog->create('login', '自动登录', false);
  80. $sign = Yii::$app->request->get('sign');
  81. $route = 'store/client/index/index';
  82. if(!empty($sign)){
  83. $redirect_url = \Yii::$app->urlManager->createAbsoluteUrl([$route,'sign'=>$sign]);
  84. }else{
  85. $redirect_url = \Yii::$app->urlManager->createAbsoluteUrl($route);
  86. }
  87. return $this->redirect($redirect_url);
  88. }
  89. if(Yii::$app->request->isPost){
  90. $post = Yii::$app->request->post();
  91. $res = self::checkRequireParam($post,['captcha','username','admin_type','sign','is_remember']);
  92. if($res === false) return $this->error(self::getStaticError());
  93. if (YII_ENV != 'dev'){
  94. if (!$this->createAction('captcha')->validate($post['captcha'], false)) return $this->error('验证码错误');
  95. }
  96. $mall = Mall::findOne(['mall_sign'=>$post['sign']]);
  97. if(empty($mall)) $this->error('门店商城不存在');
  98. $post['mall_id'] = $mall['id'];
  99. $data = StoreAdmin::login($post);
  100. if($data === false) return $this->error(Admin::getStaticError());
  101. return $this->success('登录成功',$data);
  102. }
  103. $system = \Yii::$app->services->setting->platform->get('system',true);
  104. return $this->render($this->action->id,compact('system'));
  105. }
  106. /**
  107. * 退出登录
  108. * @Author bing
  109. * @DateTime 2021-08-11 18:45:57
  110. * @copyright: Copyright (c) 2020 广东七件事集团
  111. * @return void
  112. */
  113. public function actionLogout()
  114. {
  115. $mall_id = Yii::$app->store_user->identity->mall_id;
  116. $mall = Mall::findOne(['id'=>$mall_id]);
  117. Yii::$app->store_user->logout();
  118. Yii::$app->session->set('mall',null);
  119. $redirect_url = \Yii::$app->urlManager->createAbsoluteUrl(['store/client/auth/login','sign'=>$mall['mall_sign'] ]);
  120. return $this->success('操作成功',['url'=>$redirect_url]);
  121. }
  122. }