controller); $request_action = $action->id; if ('login' == $request_action || 'user-sync' == $request_action) { return true; } $token_string = Yii::$app->request->headers->get('Token'); $user = Admin::verfication($token_string, ''); if (-1 == $user['code']) { $code = '40001'; $msg = $user['msg']; goto doEnd; } return true; $group = $user["data"]->group; $user_id = $user["data"]->uid; $platform_id = $user["data"]->platform_id; Yii::$app->request->setGroup($group); Yii::$app->request->setUserId($user_id); Yii::$app->request->setPlatformId($platform_id); $user_auth = Yii::$app->params['user_auth']['user_auth']; $user_auth_map = $user_auth[$platform_id] ?? null; if (empty($user_auth_map)) { $code = '40001'; $msg = 'platform auth error'; goto doEnd; } $user_auth_map = $user_auth_map[$user_id] ?? null; if (empty($user_auth_map)) { $code = '40001'; $msg = 'user auth error'; goto doEnd; } $auth_type_map = Yii::$app->params['user_auth'][$user_auth_map]; $auth_type_map = array_unique($auth_type_map, SORT_REGULAR); $switch = false; foreach ($auth_type_map as $key => $auth_type) { if (empty($auth_type)) continue; if ($request_class == $auth_type['class']) { $action_map = $auth_type['actions']; $switch = true; break; } } if (false == $switch) { $code = '40003'; $msg = 'controller auth error'; goto doEnd; } if (empty($action_map)) { return true; } if (in_array($request_action, $action_map)) { return true; } else { $code = '40004'; $msg = 'action auth error'; goto doEnd; } doEnd : // 返回错误 $response_message = new ResponseMsg(); $content = $response_message->jsonError($msg, $code); $content = $response_message->withHeaders($response_message->getHeaders())->withContent($content); Yii::$app->response->data = $content; Yii::$app->response->send(); return false; } }