/** * 认证相关 API * 包含: 登录/注册/SSO/权限 */ import request from './request' /** 登录请求参数 */ interface LoginParams { username: string password: string } /** 登录响应数据 */ interface LoginResult { token: string username: string nickname: string role: string } /** 注册请求参数 */ interface RegisterParams { username: string password: string email?: string nickname?: string } /** SSO提供商信息 */ export interface SSOProvider { id: number name: string display_name: string icon: string type: string } /** 用户权限信息 */ export interface UserPermissionVO { roles: { id: number; name: string; display_name: string }[] permissions: string[] } // ========== 账密登录 ========== export function login(params: LoginParams) { return request.post('/auth/login', params) } export function register(params: RegisterParams) { return request.post('/auth/register', params) } export function getProfile() { return request.get('/auth/profile') } // ========== SSO 单点登录 ========== /** 获取启用的SSO提供商列表(登录页展示) */ export function getSSOProviders() { return request.get('/sso/providers') } /** 获取SSO授权跳转URL */ export function getSSOAuthURL(providerId: number) { return request.get('/sso/auth/url', { params: { provider_id: providerId }, }) } /** SSO回调(前端处理授权码) */ export function ssoCallback(providerId: number, code: string) { return request.post('/sso/callback', { provider_id: providerId, code, }) } // ========== 权限管理 ========== /** 获取当前用户的权限信息 */ export function getUserPermissions() { return request.get('/auth/permissions') } /** 管理员: 获取所有角色 */ export function getRoles() { return request.get('/admin/roles') } /** 管理员: 创建角色 */ export function createRole(data: { name: string; display_name: string; description?: string }) { return request.post('/admin/roles', data) } /** 管理员: 设置角色权限 */ export function setRolePermissions(roleId: number, permissionIds: number[]) { return request.put(`/admin/roles/${roleId}/permissions`, { permission_ids: permissionIds }) } /** 管理员: 获取所有权限 */ export function getPermissions() { return request.get('/admin/permissions') } /** 管理员: 设置用户角色 */ export function setUserRoles(userId: number, roleIds: number[]) { return request.put(`/admin/users/${userId}/roles`, { role_ids: roleIds }) }