Files
SeeyonFileSystem/web/src/api/auth.ts
2026-07-03 15:58:29 +08:00

111 lines
2.6 KiB
TypeScript

/**
* 认证相关 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<any, { data: LoginResult }>('/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<any, { data: SSOProvider[] }>('/sso/providers')
}
/** 获取SSO授权跳转URL */
export function getSSOAuthURL(providerId: number) {
return request.get<any, { data: { auth_url: string; state: string } }>('/sso/auth/url', {
params: { provider_id: providerId },
})
}
/** SSO回调(前端处理授权码) */
export function ssoCallback(providerId: number, code: string) {
return request.post<any, { data: LoginResult }>('/sso/callback', {
provider_id: providerId,
code,
})
}
// ========== 权限管理 ==========
/** 获取当前用户的权限信息 */
export function getUserPermissions() {
return request.get<any, { data: UserPermissionVO }>('/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 })
}