Files
AI_OJ_FRONTEND/src/api/auth/auth.ts
meowrain 783ea21d55 feat(用户中心): 重构用户个人中心页面并添加HTTP常量
重构用户个人中心页面,新增HTTP请求方法常量模块
- 创建constants/http.ts定义HTTP方法常量
- 在API模块中使用HTTP常量替代字符串
- 重写用户中心页面,增加编辑资料和账号安全功能
- 添加头像上传、密码修改、邮箱绑定等功能
2026-01-18 16:59:15 +08:00

127 lines
2.4 KiB
TypeScript

import request from "@/plugins/axios";
import type { ApiResponse } from "../response";
import { HttpMethod } from "@/constants";
/**
* 认证服务 API 类型定义
*/
// 登录请求参数
export interface LoginRequest {
userAccount: string;
userPassword: string;
}
// 登录响应数据
export interface LoginResponse {
id: number;
userAccount: string;
unionId: string | null;
accessToken: string;
refreshToken: string;
accessTokenExpireTime: number | null;
refreshTokenExpireTime: number | null;
}
/**
* 注册请求参数
*/
export interface RegisterRequest {
userAccount: string;
userPassword: string;
checkPassword: string;
}
/**
* 注册响应数据
*/
export type RegisterResponse = string;
// 刷新令牌响应数据
export interface RefreshTokenResponse {
id: number | null;
userAccount: string | null;
unionId: string | null;
accessToken: string;
refreshToken: string;
accessTokenExpireTime: number | null;
refreshTokenExpireTime: number | null;
}
/**
* 认证服务 API
*/
/**
* 用户登录
* @param data 登录请求参数
* @returns 登录响应数据
*/
export const login = (
data: LoginRequest
): Promise<ApiResponse<LoginResponse>> => {
return request({
url: "/v1/auth/login",
method: HttpMethod.POST,
data,
});
};
/**
* 用户注册
* @param data 注册请求参数
* @returns 注册响应数据
*/
export const register = (
data: RegisterRequest
): Promise<ApiResponse<RegisterResponse>> => {
return request({
url: "/v1/user/register",
method: HttpMethod.POST,
data,
});
};
/**
* 令牌刷新
* @param refreshToken 刷新令牌
* @returns 新的令牌信息
*/
export const refreshToken = (
refreshToken: string
): Promise<ApiResponse<RefreshTokenResponse>> => {
return request({
url: "/v1/auth/refresh",
method: HttpMethod.POST,
params: {
refreshToken,
},
});
};
/**
* 获取访问令牌(简化版登录)
* @param data 登录请求参数
* @returns 访问令牌字符串
*/
export const getAccessToken = (
data: LoginRequest
): Promise<ApiResponse<string>> => {
return request({
url: "/v1/auth/auth",
method: HttpMethod.POST,
data,
});
};
/**
* 令牌验证
* @returns 验证结果
*/
export const validateToken = (): Promise<ApiResponse<boolean>> => {
return request({
url: "/v1/auth/validate",
method: HttpMethod.POST,
});
};