StoreQueryParamAuth.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: nodelog
  5. * Date: 2020/6/20
  6. * Time: 16:38
  7. */
  8. namespace api\common\behaviors;
  9. use common\enums\CodeEnum;
  10. use common\enums\StatusEnum;
  11. use common\modules\user\models\User;
  12. use yii\filters\auth\AuthMethod;
  13. use yii\web\HttpException;
  14. class StoreQueryParamAuth extends AuthMethod
  15. {
  16. public $tokenParam = 'token';
  17. /**
  18. * @param \yii\web\User $user
  19. * @param \yii\web\Request $request
  20. * @param \yii\web\Response $response
  21. * @return User|\yii\web\IdentityInterface|null
  22. * @throws HttpException
  23. * @author nodelog
  24. */
  25. public function authenticate($user, $request, $response)
  26. {
  27. $accessToken = $request->get($this->tokenParam);
  28. if (is_string($accessToken)) {
  29. /* @var User $identity */
  30. $identity = $user->loginByAccessToken($accessToken, get_class($this));
  31. //商家验证
  32. $store = $identity->store;
  33. if (empty($store) || $store->status == StatusEnum::STATUS_OFF) {
  34. $this->handleFailure($response);
  35. }
  36. if ($identity !== null) {
  37. return $identity;
  38. }
  39. }
  40. if ($accessToken !== null) {
  41. $this->handleFailure($response);
  42. }
  43. return null;
  44. }
  45. /**
  46. * @param $response
  47. * @throws HttpException
  48. * @author nodelog
  49. */
  50. public function handleFailure($response)
  51. {
  52. throw new HttpException(CodeEnum::CODE_FORBIDDEN, '您没有权限,请联系管理员');
  53. }
  54. }