Files
shanxia2.0/web-admin/src/api/auth.ts
T
2026-07-13 20:26:43 +08:00

101 lines
2.0 KiB
TypeScript

import request from '@/utils/http'
import { buildWebEncryptedLoginBody } from '@/utils/loginRsa'
/**
* Web端登录(RSA 加密传输账号密码)
* @param params 登录参数 { username, password }
* @returns 登录响应
*/
export async function fetchLogin(params: { username: string; password: string }) {
const body = await buildWebEncryptedLoginBody(params.username, params.password)
return request.post<{
token: string
refreshToken: string
expiresIn: number
userInfo: {
id: string
username: string
realName: string
phone: string
role: string
roles?: string[]
regionId: string
regionName: string
avatarUrl?: string | null
}
}>({
url: '/web/auth/login',
data: body
})
}
/**
* 获取当前用户信息
* @returns 用户信息
*/
export function fetchGetUserInfo() {
return request.get<{
id: string
username: string
realName: string
phone: string
role: string
roles?: string[]
regionId: string
regionName: string
regionIds?: string[]
isSuperAdmin?: boolean
isActive: boolean
avatarUrl?: string | null
}>({
url: '/web/auth/current-user'
})
}
/**
* 获取当前用户菜单 code 权限
*/
export function fetchGetMenuCodes() {
return request.get<{
isSuperAdmin: boolean
all: boolean
menuCodes: string[]
}>({
url: '/web/auth/menu-codes'
})
}
/**
* 刷新Token
* @param refreshToken 刷新令牌
* @returns 新令牌
*/
export function fetchRefreshToken(refreshToken: string) {
return request.post<{
token: string
refreshToken: string
expiresIn: number
}>({
url: '/web/auth/refresh-token',
params: { refreshToken }
})
}
/**
* 登出
*/
export function fetchLogout() {
return request.post({
url: '/web/auth/logout'
})
}
/** 当前用户修改密码 */
export function fetchChangePassword(data: { oldPassword: string; newPassword: string }) {
return request.post({
url: '/web/auth/change-password',
data,
showSuccessMessage: true
})
}