From fe75cffbf3bae6777aa2794fd89fa5dc37f5df8d Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期二, 15 七月 2025 10:11:23 +0800 Subject: [PATCH] 项目初始化 --- src/store/modules/user.ts | 88 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 88 insertions(+), 0 deletions(-) diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts new file mode 100644 index 0000000..b63c5f5 --- /dev/null +++ b/src/store/modules/user.ts @@ -0,0 +1,88 @@ +import { login, logout, getInfo } from "@/api/login"; +import { getToken, setToken, removeToken } from "@/utils/auth"; +import defAva from "@/static/images/profile.jpg"; +import { defineStore } from "pinia"; + +export interface LoginForm { + username: string; + password: string; + code: string; + uuid: string; +} + +const useUserStore = defineStore("user", { + state: () => ({ + token: getToken(), + name: "", + avatar: "", + roles: Array(), + permissions: [], + }), + actions: { + // 鐧诲綍 + login(userInfo: LoginForm) { + const username = userInfo.username.trim(); + const password = userInfo.password; + const code = userInfo.code; + const uuid = userInfo.uuid; + return new Promise((resolve, reject) => { + login(username, password, code, uuid) + .then((res: any) => { + setToken(res.token); + this.token = res.token; + resolve(null); + }) + .catch((error) => { + reject(error); + }); + }); + }, + // 鑾峰彇鐢ㄦ埛淇℃伅 + getInfo() { + return new Promise((resolve, reject) => { + getInfo() + .then((res: any) => { + const user = res.user; + const avatar = + user.avatar == "" || user.avatar == null + ? defAva + : import.meta.env.VITE_APP_BASE_API + user.avatar; + + if (res.roles && res.roles.length > 0) { + // 楠岃瘉杩斿洖鐨剅oles鏄惁鏄竴涓潪绌烘暟缁� + this.roles = res.roles; + this.permissions = res.permissions; + } else { + this.roles = ["ROLE_DEFAULT"]; + } + this.name = user.userName; + this.avatar = avatar; + resolve(res); + }) + .catch((error) => { + reject(error); + }); + }); + }, + // 閫�鍑虹郴缁� + logOut() { + return new Promise<null>((resolve, reject) => { + logout() + .then(() => { + this.token = ""; + this.roles = []; + this.permissions = []; + this.name = ""; + this.avatar = ""; + removeToken(); + resolve(null); + }) + .catch((error) => { + reject(error); + }); + }); + }, + }, +}); + +export default useUserStore; -- Gitblit v1.9.3