FilterPermission.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace app\v1\middleware;
  3. use plugin\saiadmin\app\cache\UserInfoCache;
  4. use support\think\Db;
  5. use Webman\Http\Request;
  6. use Webman\Http\Response;
  7. use Webman\MiddlewareInterface;
  8. /**
  9. * 权限检查中间件
  10. */
  11. class FilterPermission implements MiddlewareInterface
  12. {
  13. public function process(Request $request, callable $handler) : Response
  14. {
  15. // 根据用户id获取用户权限
  16. $token = getCurrentInfo();
  17. // 用户权限缓存
  18. $userAuthCache = new UserInfoCache($token['id']);
  19. $user_info = $userAuthCache->getUserInfo();
  20. $currentUserRoleList = array_column($user_info['roleList'], 'id');
  21. // $user_info = $this->systemUserLogic->read($token['id']);
  22. // 获取游戏数据权限
  23. if(in_array(1,$currentUserRoleList)){
  24. $authGameList = '';
  25. }else{
  26. // 根据部门的游戏权限
  27. $result = Db::connect('db_system')->table('sa_system_user')->field('dept_id')->where('id', $user_info['id'])->find();
  28. $departmentId = $result['dept_id'] ?? 0;
  29. $departmentInfo = Db::connect('db_system')->table('sa_system_dept')->where('id',$departmentId)->find();
  30. $departmentGameList = $departmentInfo['game_list'] ?? '';
  31. $authGameList = $departmentGameList;
  32. if($departmentGameList=='*'){
  33. $authGameList = '';
  34. }
  35. }
  36. // 获取游戏自然量数据权限
  37. if(in_array(1,$currentUserRoleList)){
  38. $auth_normal_game_list = '*';
  39. }else{
  40. $auth_normal_game_list = $user_info['normal_game_list'] ?? '-1';
  41. }
  42. // 获取广告投放数据权限
  43. if(in_array(1,$currentUserRoleList)){
  44. $auth_ad_permission = 1;
  45. }else{
  46. $auth_ad_permission = $user_info['ad_permission'];
  47. }
  48. // 追加参数逻辑
  49. $extraParams = [
  50. 'auth_normal_game_list' => $auth_normal_game_list,
  51. 'auth_game_list' => $authGameList,
  52. 'auth_ad_permission' =>$auth_ad_permission,
  53. ];
  54. // 合并并设置回 request
  55. $origin_header = $request->header();
  56. $request->setHeader(array_merge($origin_header, $extraParams));
  57. return $handler($request);
  58. }
  59. }