service = $service; $this->validate = $validate; } #[OA\Get( path: '/system/auth/user-info', summary: '获取登录用户', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[Permission(code: 'system:auth:user_info')] #[AllowAnonymous(requireToken: true, requirePermission: false)] #[SimpleResponse(example: '{"code": 0,"msg": "ok","data": {"id": "1","user_name": "admin","real_name": "超级管理员","nick_name": "超级管理员","is_super": 1,"mobile_phone": null,"email": null,"avatar": null,"signed": null,"dashboard": null,"dept_id": "","enabled": 1,"login_ip": "127.0.0.1","login_time": 1762429533,"created_by": null,"updated_by": null,"created_at": "2025-10-30T12:24:09.000000Z","updated_at": "2025-11-06T11:45:34.000000Z","deleted_at": null,"sex": 0,"remark": null,"birthday": null,"tel": null,"is_locked": 0,"role_id_list": [],"post_id_list": [],"created_date": "2025-10-30 20:24:09","updated_date": "2025-11-06 19:45:34","depts": [],"posts": [],"casbin": [],"roles": []}}')] public function getUserInfo(Request $request): \support\Response { try { /** @var CurrentUser $currentUser */ $currentUser = Container::make(CurrentUser::class); $data = $currentUser->admin(true); if (empty($data)) { throw new UnauthorizedHttpException('用户凭证失效请重新登录'); } return Json::success('ok', $data); } catch (\Throwable $e) { return Json::fail($e->getMessage(), null, 401); } } #[OA\Get( path: '/system/auth/user-menus', summary: '获取用户-权限菜单', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[Permission(code: 'system:auth:user_menus')] #[AllowAnonymous(requireToken: true, requirePermission: false)] #[SimpleResponse(schema: [], example: [])] public function getPermissionsMenu(Request $request): \support\Response { try { $format = input('format', 'default'); /** @var CurrentUser $currUser */ $currUser = Container::make(CurrentUser::class); $collection = $this->service->getMenusByUserRoles($currUser, true); $event = new MenuFormattingEvent($collection, $format); $data = $event->dispatch(); return Json::success('ok', $data); } catch (\Throwable $e) { return Json::fail($e->getMessage(), [], $e->getCode()); } } #[OA\Get( path: '/system/auth/user-permissions', summary: '权限菜单-包含所有 菜单 按钮 接口', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[Permission(code: 'system:auth:user_permissions')] #[SimpleResponse(example: '{"code": 0,"msg": "ok","data": []}')] public function getPermissions(Request $request): \support\Response { try { $format = input('format', 'default'); /** @var CurrentUser $currUser */ $currUser = Container::make(CurrentUser::class); $collection = $this->service->getMenusByUserRoles($currUser, true); $event = new MenuFormattingEvent($collection, $format); $data = $event->dispatch(); return Json::success('ok', $data); } catch (\Throwable $e) { return Json::fail($e->getMessage(), [], $e->getCode()); } } #[OA\Get( path: '/system/auth/perm-code', summary: '获取用户-权限码', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[Permission(code: 'system:auth:perm_code')] #[AllowAnonymous(requireToken: true, requirePermission: false)] #[SimpleResponse(example: '{"code": 0,"msg": "ok","data": ["admin"]}')] public function getUserCodes(Request $request): \support\Response { try { /** @var CurrentUser $currUser */ $currUser = Container::make(CurrentUser::class); $data = $this->service->getCodesByUserRoles($currUser); return Json::success('ok', $data); } catch (\Throwable $e) { return Json::fail($e->getMessage(), [], $e->getCode()); } } #[OA\Get( path: '/system/auth/role-menu-ids', summary: '通过角色ID获取权限ID集合', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[Permission(code: 'system:auth:role_menu_ids')] #[SimpleResponse(example: ['code' => 0, 'message' => 'success', 'data' => []])] public function roleMenuIds(Request $request): \support\Response { try { $roleId = $request->input('role_id'); /** @var RoleService $systemRoleService */ $systemRoleService = Container::make(RoleService::class); $data = $systemRoleService->getPermissionColumns($roleId); return Json::success('ok', $data); } catch (\Throwable $e) { return Json::fail($e->getMessage(), [], $e->getCode()); } } #[OA\Get( path: '/system/auth/role-scope-ids', summary: '通过角色ID获取权限范围自定义部门ID集合', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[Permission(code: 'system:auth:role_scope_ids')] #[SimpleResponse(example: ['code' => 0, 'message' => 'success', 'data' => []])] public function roleScopeIds(Request $request): \support\Response { try { $roleId = $request->input('role_id'); /** @var RoleScopeDeptService $systemRoleMenuService */ $systemRoleMenuService = Container::make(RoleScopeDeptService::class); $data = $systemRoleMenuService->getColumn(['role_id' => $roleId], 'dept_id'); return Json::success('ok', $data); } catch (\Throwable $e) { return Json::fail($e->getMessage(), [], $e->getCode()); } } #[OA\Post( path: '/system/auth/save-role-menu', summary: '保存角色菜单关系', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[Permission(code: 'system:auth:role_menu')] #[SimpleResponse(schema: [], example: [])] public function saveRoleMenuRelation(Request $request): \support\Response { try { $data = $request->all(); /** @var RoleMenuService $systemRoleMenuService */ $systemRoleMenuService = Container::make(RoleMenuService::class); $systemRoleMenuService->save($data); return Json::success('success'); } catch (\Throwable $e) { return Json::fail($e->getMessage(), [], $e->getCode()); } } #[OA\Get( path: '/system/auth/user-list-by-role-id', summary: '获取角色-关联用户列表', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[OA\Parameter( name: 'role_id', description: '角色ID', in: 'query', required: true, schema: new OA\Schema(type: 'string'), )] #[Permission(code: 'system:auth:role_user_list')] #[SimpleResponse(example: ['code' => 0, 'message' => 'success', 'data' => []])] public function getUsersByRoleId(Request $request): \support\Response { try { [$where, $format, $limit, $field, $order, $page] = $this->selectInput($request, [ 'exclude_filters' => true, 'filter_format' => 'simple', // 简洁模式没有操作符 'custom_fields' => [ 'user_name', 'real_name', 'mobile_phone', 'role_id', ], ]); /** @var AdminService $systemUserService */ $systemUserService = Container::make(AdminService::class); $data = $systemUserService->getUsersListByRoleId($where, $field, $page, $limit); return Json::success('ok', $data); } catch (\Throwable $e) { return Json::fail($e->getMessage(), [], $e->getCode()); } } #[OA\Post( path: '/system/auth/save-user-role', summary: '保存用户-关联角色', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[Permission(code: 'system:auth:save_user_role')] #[SimpleResponse(example: '{"code": 0,"msg": "success"}')] public function saveUserRoles(Request $request): \support\Response { try { $data = $request->all(); /** @var AdminRoleService $systemUserRoleService */ $systemUserRoleService = Container::make(AdminRoleService::class); $systemUserRoleService->saveUserRoles($data); return Json::success('success'); } catch (\Throwable $e) { return Json::fail($e->getMessage(), [], $e->getCode()); } } #[OA\Post( path: '/system/auth/remove-user-role', summary: '移除用户-关联角色', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[Permission(code: 'system:auth:remove_user_role')] #[SimpleResponse(example: '{"code": 0,"msg": "ok"}')] public function removeUserRole(Request $request): \support\Response { try { $data = $request->all(); /** @var AdminRoleService $systemUserRoleService */ $systemUserRoleService = Container::make(AdminRoleService::class); $systemUserRoleService->removeUserRole($data); return Json::success('ok'); } catch (\Throwable $e) { return Json::fail($e->getMessage(), [], $e->getCode()); } } #[OA\Get( path: '/system/auth/user-list-exclude-role-id', summary: '获取用户列表-排除指定角色id', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[OA\Parameter( name: 'role_id', description: '角色ID', in: 'query', required: true, schema: new OA\Schema(type: 'string'), )] #[Permission(code: 'system:auth:user_list_exclude_role')] #[SimpleResponse(example: ['code' => 0, 'message' => 'success', 'data' => []])] public function getUsersExcludingRole(Request $request): \support\Response { try { [$where, $format, $limit, $field, $order, $page] = $this->selectInput($request, [ 'exclude_filters' => true, 'filter_format' => 'simple', // 简洁模式没有操作符 'custom_fields' => [ 'LIKE_user_name', 'LIKE_real_name', 'LIKE_mobile_phone', 'role_id', ]]); $systemUserService = Container::make(AdminService::class); $data = $systemUserService->getUsersExcludingRole($where, $field, $page, $limit); return Json::success('ok', $data); } catch (\Throwable $e) { return Json::fail($e->getMessage(), [], $e->getCode()); } } /** * @throws \core\jwt\ex\JwtRefreshTokenExpiredException */ #[OA\Post( path: '/system/auth/refresh-token', summary: '刷新Token', security: [['Bearer' => [], 'ApiKey' => []]], tags: ['权限相关'], )] #[Permission(code: 'system:auth:refresh_token')] #[AllowAnonymous(requireToken: false, requirePermission: false)] #[SimpleResponse(example: '{"data": "new_access_token"}')] public function refreshToken(Request $request): \support\Response { $token = (new JwtToken())->refresh(); return Json::success('ok', [ 'access_token' => $token->accessToken, 'refresh_token' => $token->refreshToken, 'expires_in' => $token->expiresIn, 'expires_at' => $token->expiresAt->getTimestamp(), ]); } }