feat(auth): 添加用户注册功能及相关接口
实现用户注册功能,包括: 1. 在auth模块中添加register接口及相关类型定义 2. 在UserRegisterView中实现注册表单提交逻辑 3. 修改FileListItem的id类型为string以保持一致性
This commit is contained in:
@@ -5,8 +5,6 @@ import type { ApiResponse } from "../response";
|
||||
* 认证服务 API 类型定义
|
||||
*/
|
||||
|
||||
|
||||
|
||||
// 登录请求参数
|
||||
export interface LoginRequest {
|
||||
userAccount: string;
|
||||
@@ -23,7 +21,18 @@ export interface LoginResponse {
|
||||
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;
|
||||
@@ -44,16 +53,30 @@ export interface RefreshTokenResponse {
|
||||
* @param data 登录请求参数
|
||||
* @returns 登录响应数据
|
||||
*/
|
||||
export const login = (data: LoginRequest): Promise<ApiResponse<LoginResponse>> => {
|
||||
export const login = (
|
||||
data: LoginRequest
|
||||
): Promise<ApiResponse<LoginResponse>> => {
|
||||
return request.post("/v1/auth/login", data);
|
||||
};
|
||||
|
||||
/**
|
||||
* 用户注册
|
||||
* @param data 注册请求参数
|
||||
* @returns 注册响应数据
|
||||
*/
|
||||
export const register = (
|
||||
data: RegisterRequest
|
||||
): Promise<ApiResponse<RegisterResponse>> => {
|
||||
return request.post("/v1/user/register", data);
|
||||
};
|
||||
/**
|
||||
* 令牌刷新
|
||||
* @param refreshToken 刷新令牌
|
||||
* @returns 新的令牌信息
|
||||
*/
|
||||
export const refreshToken = (refreshToken: string): Promise<ApiResponse<RefreshTokenResponse>> => {
|
||||
export const refreshToken = (
|
||||
refreshToken: string
|
||||
): Promise<ApiResponse<RefreshTokenResponse>> => {
|
||||
return request.post("/v1/auth/refresh", null, {
|
||||
params: {
|
||||
refreshToken,
|
||||
@@ -66,7 +89,9 @@ export const refreshToken = (refreshToken: string): Promise<ApiResponse<RefreshT
|
||||
* @param data 登录请求参数
|
||||
* @returns 访问令牌字符串
|
||||
*/
|
||||
export const getAccessToken = (data: LoginRequest): Promise<ApiResponse<string>> => {
|
||||
export const getAccessToken = (
|
||||
data: LoginRequest
|
||||
): Promise<ApiResponse<string>> => {
|
||||
return request.post("/v1/auth/auth", data);
|
||||
};
|
||||
|
||||
|
||||
@@ -3,10 +3,13 @@ export { chatAPI, type ChatMessage, type ChatRequest } from '../aiChat'
|
||||
// 认证 API
|
||||
export {
|
||||
login,
|
||||
register,
|
||||
refreshToken,
|
||||
getAccessToken,
|
||||
validateToken,
|
||||
type LoginRequest,
|
||||
type LoginResponse,
|
||||
type RegisterRequest,
|
||||
type RegisterResponse,
|
||||
type RefreshTokenResponse,
|
||||
} from './auth'
|
||||
@@ -72,7 +72,7 @@ export const deleteFile = async (id: number) => {
|
||||
export interface FileListItem {
|
||||
|
||||
/* 文件记录的唯一标识 ID */
|
||||
id: number;
|
||||
id: string;
|
||||
|
||||
/* 文件的原始名称(不包含扩展名) */
|
||||
fileName: string;
|
||||
|
||||
@@ -94,6 +94,8 @@ import { reactive, ref } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import { Message } from "@arco-design/web-vue";
|
||||
import { IconUser, IconLock } from "@arco-design/web-vue/es/icon";
|
||||
import { register } from "@/api/auth/auth";
|
||||
import { isApiSuccess } from "@/api/response";
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
@@ -151,27 +153,18 @@ const handleSubmit = async (data: any) => {
|
||||
loading.value = true;
|
||||
|
||||
try {
|
||||
// TODO: 调用注册 API
|
||||
// 目前后端文档中没有注册接口,这里模拟注册成功
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
const res = await register({
|
||||
userAccount: form.userAccount,
|
||||
userPassword: form.userPassword,
|
||||
checkPassword: form.confirmPassword,
|
||||
});
|
||||
|
||||
Message.success("注册成功!请登录");
|
||||
|
||||
// 跳转到登录页
|
||||
router.push("/user/login");
|
||||
|
||||
// 实际实现时应该调用后端注册接口:
|
||||
// const response = await register({
|
||||
// userAccount: form.userAccount,
|
||||
// userPassword: form.userPassword,
|
||||
// });
|
||||
//
|
||||
// if (response.success) {
|
||||
// Message.success("注册成功!请登录");
|
||||
// router.push("/user/login");
|
||||
// } else {
|
||||
// Message.error(response.message || "注册失败");
|
||||
// }
|
||||
if (isApiSuccess(res)) {
|
||||
Message.success("注册成功!请登录");
|
||||
router.push("/user/login");
|
||||
} else {
|
||||
Message.error(res.message || "注册失败");
|
||||
}
|
||||
} catch (error: any) {
|
||||
console.error("注册失败:", error);
|
||||
Message.error(error.response?.data?.message || "注册失败,请稍后重试");
|
||||
|
||||
Reference in New Issue
Block a user