| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace app\v1\middleware;
- use plugin\saiadmin\app\cache\UserInfoCache;
- use support\think\Db;
- use Webman\Http\Request;
- use Webman\Http\Response;
- use Webman\MiddlewareInterface;
- /**
- * 权限检查中间件
- */
- class FilterPermission implements MiddlewareInterface
- {
- public function process(Request $request, callable $handler) : Response
- {
- // 根据用户id获取用户权限
- $token = getCurrentInfo();
- // 用户权限缓存
- $userAuthCache = new UserInfoCache($token['id']);
- $user_info = $userAuthCache->getUserInfo();
- $currentUserRoleList = array_column($user_info['roleList'], 'id');
- // $user_info = $this->systemUserLogic->read($token['id']);
- // 获取游戏数据权限
- if(in_array(1,$currentUserRoleList)){
- $authGameList = '*';
- }else{
- $authGameList = $user_info['game_list'] ?? '';
- }
- // 获取游戏自然量数据权限
- if(in_array(1,$currentUserRoleList)){
- // 如果是管理员,则不限制自然量数据权限
- // 需要请求所有游戏ID
- $gameData = Db::connect('db_center')->table('pf_game')->where('status',1)->select()->toArray();
- $game_list = array_column($gameData, 'id');
- $auth_normal_game_list = array_values($game_list);
- }else{
- $auth_normal_game_list = $user_info['normal_game_list'] ?? '';
- }
- // 获取广告投放数据权限
- if(in_array(1,$currentUserRoleList)){
- $auth_ad_permission = '*';
- }else{
- $auth_ad_permission = $user_info['ad_permission'] ?? '';
- }
- // 追加参数逻辑
- $extraParams = [
- 'auth_normal_game_list' => $auth_normal_game_list === '*' ? '' : $auth_normal_game_list,
- 'auth_game_list' => $authGameList === '' ? '' : $authGameList,
- 'auth_ad_permission' => $auth_ad_permission === '*' ? 1 : $auth_ad_permission,
- ];
-
- // 合并并设置回 request
- $origin_header = $request->header();
- $request->setHeader(array_merge($origin_header, $extraParams));
- return $handler($request);
- }
- }
|