isOk() && $response->exception instanceof PermissionForbidden) { return; } $user = Auth::guard(getGuardName())->user(); $userModel = getAuthUserModel(); if (! $user instanceof $userModel) { return; } $user->getAttribute('permissions')->each(function ($permission) use ($user, $request, $response) { if ($permission->isAction()) { [$controller, $action] = explode('@', $permission->permission_mark); if (! CatchAdmin::getModuleControllerNamespace($permission->module).$controller.'Controller@'.$action == Route::currentRouteAction()) { return; } $requestStartAt = app(Kernel::class)->requestStartedAt()->timestamp; $params = $request->all(); // 如果参数过长则不记录 if (!empty($params)) { if (strlen($encodeParams = \json_encode($params, JSON_UNESCAPED_UNICODE)) > 5000) { $params = []; } } $this->storeBy([ 'module' => $permission->module, 'operate' => $permission->permission_name, 'route' => $permission->permission_mark, 'creator_id' => $user->id, 'http_method' => $request->method(), 'http_code' => $response->getStatusCode(), 'start_at' => $requestStartAt, 'time_taken' => time() - $requestStartAt, 'ip' => $request->ip(), 'params' => !empty($params) ? $encodeParams : '', 'created_at' => time() ]); } }); } /** * @return Attribute */ protected function timeTaken(): Attribute { return new Attribute( get: fn($value) => $value . 's', ); } }