FilterPermission.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. $authGameList = $user_info['game_list'] ?? '';
  27. }
  28. // 获取游戏自然量数据权限
  29. if(in_array(1,$currentUserRoleList)){
  30. // 如果是管理员,则不限制自然量数据权限
  31. // 需要请求所有游戏ID
  32. $gameData = Db::connect('db_center')->table('pf_game')->where('status',1)->select()->toArray();
  33. $game_list = array_column($gameData, 'id');
  34. $auth_normal_game_list = array_values($game_list);
  35. }else{
  36. $auth_normal_game_list = $user_info['normal_game_list'] ?? '';
  37. }
  38. // 获取广告投放数据权限
  39. if(in_array(1,$currentUserRoleList)){
  40. $auth_ad_permission = '*';
  41. }else{
  42. $auth_ad_permission = $user_info['ad_permission'] ?? '';
  43. }
  44. // 追加参数逻辑
  45. $extraParams = [
  46. 'auth_normal_game_list' => $auth_normal_game_list === '*' ? '' : $auth_normal_game_list,
  47. 'auth_game_list' => $authGameList === '' ? '' : $authGameList,
  48. 'auth_ad_permission' => $auth_ad_permission === '*' ? 1 : $auth_ad_permission,
  49. ];
  50. // 合并并设置回 request
  51. $origin_header = $request->header();
  52. $request->setHeader(array_merge($origin_header, $extraParams));
  53. return $handler($request);
  54. }
  55. }