111 lines
2.6 KiB
TypeScript
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 })
|
|
}
|