179 lines
3.6 KiB
TypeScript
179 lines
3.6 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
|
|
roleNames?: string[]
|
|
regionId: string
|
|
regionName: string
|
|
avatarUrl?: string | null
|
|
}
|
|
}>({
|
|
url: '/web/auth/login',
|
|
data: body
|
|
})
|
|
}
|
|
|
|
export function fetchWxQrCreate() {
|
|
return request.post<{
|
|
sessionId: string
|
|
expiresIn: number
|
|
qrImageBase64: string
|
|
}>({
|
|
url: '/web/auth/wx-qr/create',
|
|
data: {},
|
|
headers: { 'X-Api-Crypto': 'off' },
|
|
showErrorMessage: true
|
|
})
|
|
}
|
|
|
|
export function fetchWxQrStatus(sessionId: string) {
|
|
return request.get<{
|
|
status: string
|
|
message?: string
|
|
token?: string
|
|
refreshToken?: string
|
|
expiresIn?: number
|
|
userInfo?: {
|
|
id: string
|
|
username: string
|
|
realName: string
|
|
phone: string
|
|
role: string
|
|
roleNames?: string[]
|
|
regionId: string
|
|
regionName: string
|
|
avatarUrl?: string | null
|
|
}
|
|
}>({
|
|
url: '/web/auth/wx-qr/status',
|
|
params: { sessionId },
|
|
headers: { 'X-Api-Crypto': 'off' },
|
|
showErrorMessage: false
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 获取当前用户信息
|
|
* @returns 用户信息
|
|
*/
|
|
export function fetchGetUserInfo() {
|
|
return request.get<{
|
|
id: string
|
|
username: string
|
|
realName: string
|
|
phone: string
|
|
email?: string
|
|
sex?: string
|
|
remark?: string
|
|
role: string
|
|
roleNames?: string[]
|
|
regionId: string
|
|
regionName: string
|
|
regionIds?: string[]
|
|
isSuperAdmin?: boolean
|
|
isActive: boolean
|
|
avatarUrl?: string | null
|
|
}>({
|
|
url: '/web/auth/current-user'
|
|
})
|
|
}
|
|
|
|
/** 当前用户更新个人信息 */
|
|
export function fetchUpdateProfile(data: {
|
|
phoneNo?: string
|
|
email?: string
|
|
sex?: string
|
|
remark?: string
|
|
avatarUrl?: string
|
|
}) {
|
|
return request.put<{
|
|
id: string
|
|
username: string
|
|
realName: string
|
|
phone: string
|
|
email?: string
|
|
sex?: string
|
|
remark?: string
|
|
role: string
|
|
roleNames?: string[]
|
|
regionId: string
|
|
regionName: string
|
|
avatarUrl?: string | null
|
|
}>({
|
|
url: '/web/auth/profile',
|
|
data,
|
|
showSuccessMessage: true
|
|
})
|
|
}
|
|
|
|
/** 当前用户上传头像 */
|
|
export function fetchUploadProfileAvatar(data: FormData) {
|
|
return request.post<{ url: string }>({
|
|
url: '/web/auth/upload-avatar',
|
|
data
|
|
})
|
|
}
|
|
|
|
/** 当前用户修改密码 */
|
|
export function fetchChangePassword(data: { oldPassword: string; newPassword: string }) {
|
|
return request.post({
|
|
url: '/web/auth/change-password',
|
|
data,
|
|
showSuccessMessage: true
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 获取当前用户菜单 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',
|
|
data: { refreshToken }
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 登出
|
|
*/
|
|
export function fetchLogout() {
|
|
return request.post({
|
|
url: '/web/auth/logout'
|
|
})
|
|
}
|