MaterialLevelAuth.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace app\modules\client\behaviors;
  3. use app\models\Option;
  4. use app\models\SaasUser;
  5. use app\models\User;
  6. use yii\base\ActionFilter;
  7. use yii\web\Response;
  8. class MaterialLevelAuth extends ActionFilter
  9. {
  10. public function beforeAction($action)
  11. {
  12. $store_id = get_params('store_id') ?: post_params('store_id');
  13. $access_token = get_params('access_token') ?: post_params('access_token');
  14. if (!$access_token) {
  15. \Yii::$app->response->format = Response::FORMAT_JSON;
  16. \Yii::$app->response->data = [
  17. 'code' => 401,
  18. 'msg' => 'access_token 不能为空'
  19. ];
  20. return false;
  21. }
  22. $saasUser = SaasUser::findIdentityByAccessToken($access_token);
  23. if (!$saasUser) {
  24. \Yii::$app->response->format = Response::FORMAT_JSON;
  25. \Yii::$app->response->data = [
  26. 'code' => 401,
  27. 'msg' => '登录失败 获取不到用户信息'
  28. ];
  29. return false;
  30. }
  31. $user = User::findOne(['store_id' => $store_id, 'binding' => $saasUser->mobile, 'is_delete' => 0]);
  32. if (!$user) {
  33. \Yii::$app->response->format = Response::FORMAT_JSON;
  34. \Yii::$app->response->data = [
  35. 'code' => 401,
  36. 'msg' => '登录失败 获取不到商城用户信息'
  37. ];
  38. return false;
  39. }
  40. $materialVisualLevel = Option::get('material_visual_level', $store_id, 'store', json_encode([], JSON_UNESCAPED_UNICODE))['value'];
  41. $materialVisualLevelArray = json_decode($materialVisualLevel, true);
  42. //默认所有会员都可以进入 或者后台设置全部会员可进
  43. if (empty($materialVisualLevelArray) || in_array(-1, $materialVisualLevelArray)) {
  44. return true;
  45. }
  46. if (!in_array($user->level, $materialVisualLevelArray)) {
  47. \Yii::$app->response->format = Response::FORMAT_JSON;
  48. \Yii::$app->response->data = [
  49. 'code' => 0,
  50. 'msg' => '您的权限不足,不能进入该板块',
  51. 'data' => [
  52. 'status' => 1
  53. ]
  54. ];
  55. return false;
  56. }
  57. return true;
  58. }
  59. }