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