101 lines
2.0 KiB
TypeScript
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
|
|
})
|
|
}
|