feat: 添加登录和获取用户信息接口,整合pinia实现用户状态全局共享

This commit is contained in:
ray
2024-09-23 08:29:44 +08:00
parent f106f84646
commit 737f6a3ee5
21 changed files with 6997 additions and 5061 deletions

44
src/api/auth.ts Normal file
View File

@@ -0,0 +1,44 @@
import request from "@/utils/request";
class AuthAPI {
/**
* 登录接口
*
* @param username 用户名
* @param password 密码
* @returns 返回 token
*/
static login(username: string, password: string): Promise<LoginResult> {
return request<LoginResult>({
url: "/api/v1/auth/login",
method: "POST",
data: {
username,
password,
},
header: {
"Content-Type": "application/x-www-form-urlencoded",
},
});
}
/**
* 登出接口
*/
static logout(): Promise<void> {
return request<void>({
url: "/api/v1/auth/logout",
method: "DELETE",
});
}
}
export default AuthAPI;
/** 登录响应 */
export interface LoginResult {
/** 访问token */
accessToken?: string;
/** token 类型 */
tokenType?: string;
}

39
src/api/user.ts Normal file
View File

@@ -0,0 +1,39 @@
import request from "@/utils/request";
const USER_BASE_URL = "/api/v1/users";
class UserAPI {
/**
* 获取当前登录用户信息
*
* @returns 登录用户昵称、头像信息,包括角色和权限
*/
static getUserInfo(): Promise<UserInfo> {
return request<UserInfo>({
url: `${USER_BASE_URL}/me`,
method: "GET",
});
}
}
export default UserAPI;
/** 登录用户信息 */
export interface UserInfo {
/** 用户ID */
userId?: number;
/** 用户名 */
username?: string;
/** 昵称 */
nickname?: string;
/** 头像URL */
avatar?: string;
/** 角色 */
roles: string[];
/** 权限 */
perms: string[];
}