|
|
@@ -46,12 +46,21 @@ class AuthController
|
|
|
*/
|
|
|
public function token(Request $request): JsonResponse
|
|
|
{
|
|
|
+ $startTime = microtime(true);
|
|
|
+
|
|
|
+ // 初始化请求日志记录器
|
|
|
+ $requestLogger = new \App\Module\System\Services\RequestLogger($request);
|
|
|
+ $requestLogger->setRouter("openapi/auth/token");
|
|
|
+
|
|
|
try {
|
|
|
// 使用标准验证系统
|
|
|
$validation = new \App\Module\OpenAPI\Validations\TokenRequestValidation($request->all());
|
|
|
$validation->validate();
|
|
|
|
|
|
if ($validation->isFail()) {
|
|
|
+ // 记录验证失败和运行时间
|
|
|
+ $requestLogger->setError('参数验证失败: ' . json_encode($validation->getErrors()));
|
|
|
+ $requestLogger->setRunTime($startTime);
|
|
|
return $this->errorResponse('参数验证失败', $validation->getErrors(), 400);
|
|
|
}
|
|
|
|
|
|
@@ -59,28 +68,29 @@ class AuthController
|
|
|
$grantType = $data['grant_type'];
|
|
|
|
|
|
// 根据授权类型处理
|
|
|
- switch ($grantType) {
|
|
|
- case 'client_credentials':
|
|
|
- return $this->handleClientCredentials(
|
|
|
- $validation->app,
|
|
|
- $validation->scopes ?? []
|
|
|
- );
|
|
|
-
|
|
|
- case 'authorization_code':
|
|
|
- return $this->handleAuthorizationCode(
|
|
|
- $validation->app,
|
|
|
- $data['code'],
|
|
|
- $validation->scopes ?? []
|
|
|
- );
|
|
|
-
|
|
|
- case 'refresh_token':
|
|
|
- return $this->handleRefreshToken($data['refresh_token']);
|
|
|
-
|
|
|
- default:
|
|
|
- return $this->errorResponse('不支持的授权类型', [], 400);
|
|
|
- }
|
|
|
+ $response = match ($grantType) {
|
|
|
+ 'client_credentials' => $this->handleClientCredentials(
|
|
|
+ $validation->app,
|
|
|
+ $validation->scopes ?? []
|
|
|
+ ),
|
|
|
+ 'authorization_code' => $this->handleAuthorizationCode(
|
|
|
+ $validation->app,
|
|
|
+ $data['code'],
|
|
|
+ $validation->scopes ?? []
|
|
|
+ ),
|
|
|
+ 'refresh_token' => $this->handleRefreshToken($data['refresh_token']),
|
|
|
+ default => $this->errorResponse('不支持的授权类型', [], 400)
|
|
|
+ };
|
|
|
+
|
|
|
+ // 记录运行时间
|
|
|
+ $requestLogger->setRunTime($startTime);
|
|
|
+
|
|
|
+ return $response;
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
+ // 记录错误信息和运行时间
|
|
|
+ $requestLogger->setError($e->getMessage());
|
|
|
+ $requestLogger->setRunTime($startTime);
|
|
|
return $this->errorResponse('获取令牌失败', ['message' => $e->getMessage()], 500);
|
|
|
}
|
|
|
}
|
|
|
@@ -151,21 +161,37 @@ class AuthController
|
|
|
*/
|
|
|
public function refresh(Request $request): JsonResponse
|
|
|
{
|
|
|
+ $startTime = microtime(true);
|
|
|
+
|
|
|
+ // 初始化请求日志记录器
|
|
|
+ $requestLogger = new \App\Module\System\Services\RequestLogger($request);
|
|
|
+ $requestLogger->setRouter("openapi/auth/refresh");
|
|
|
+
|
|
|
try {
|
|
|
$refreshToken = $request->input('refresh_token');
|
|
|
-
|
|
|
+
|
|
|
if (!$refreshToken) {
|
|
|
+ $requestLogger->setError('缺少刷新令牌');
|
|
|
+ $requestLogger->setRunTime($startTime);
|
|
|
return $this->errorResponse('缺少刷新令牌', [], 400);
|
|
|
}
|
|
|
|
|
|
$tokenData = $this->authService->refreshAccessToken($refreshToken);
|
|
|
if (!$tokenData) {
|
|
|
+ $requestLogger->setError('刷新令牌无效');
|
|
|
+ $requestLogger->setRunTime($startTime);
|
|
|
return $this->errorResponse('刷新令牌无效', [], 400);
|
|
|
}
|
|
|
|
|
|
+ // 记录运行时间
|
|
|
+ $requestLogger->setRunTime($startTime);
|
|
|
+
|
|
|
return $this->successResponse('令牌刷新成功', $tokenData);
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
+ // 记录错误信息和运行时间
|
|
|
+ $requestLogger->setError($e->getMessage());
|
|
|
+ $requestLogger->setRunTime($startTime);
|
|
|
return $this->errorResponse('刷新令牌失败', ['message' => $e->getMessage()], 500);
|
|
|
}
|
|
|
}
|
|
|
@@ -202,6 +228,12 @@ class AuthController
|
|
|
*/
|
|
|
public function jwt(Request $request): JsonResponse
|
|
|
{
|
|
|
+ $startTime = microtime(true);
|
|
|
+
|
|
|
+ // 初始化请求日志记录器
|
|
|
+ $requestLogger = new \App\Module\System\Services\RequestLogger($request);
|
|
|
+ $requestLogger->setRouter("openapi/auth/jwt");
|
|
|
+
|
|
|
try {
|
|
|
$appId = $request->input('app_id');
|
|
|
$appSecret = $request->input('app_secret');
|
|
|
@@ -209,6 +241,8 @@ class AuthController
|
|
|
// 验证应用
|
|
|
$app = $this->openApiService->validateApp($appId, $appSecret);
|
|
|
if (!$app) {
|
|
|
+ $requestLogger->setError('应用认证失败');
|
|
|
+ $requestLogger->setRunTime($startTime);
|
|
|
return $this->errorResponse('应用认证失败', [], 401);
|
|
|
}
|
|
|
|
|
|
@@ -220,6 +254,9 @@ class AuthController
|
|
|
|
|
|
$token = $this->authService->generateJwtToken($app, $payload);
|
|
|
|
|
|
+ // 记录运行时间
|
|
|
+ $requestLogger->setRunTime($startTime);
|
|
|
+
|
|
|
return $this->successResponse('JWT令牌生成成功', [
|
|
|
'token' => $token,
|
|
|
'token_type' => 'Bearer',
|
|
|
@@ -227,6 +264,9 @@ class AuthController
|
|
|
]);
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
+ // 记录错误信息和运行时间
|
|
|
+ $requestLogger->setError($e->getMessage());
|
|
|
+ $requestLogger->setRunTime($startTime);
|
|
|
return $this->errorResponse('生成JWT令牌失败', ['message' => $e->getMessage()], 500);
|
|
|
}
|
|
|
}
|