import { defineStore } from "pinia"; import { loginApi, logoutApi,loginApiIng } from "@/api/auth"; import { getUserInfo,getUserInfoIng } from "@/api/user"; import { resetRouter } from "@/router"; import { store } from "@/store"; import { LoginData } from "@/api/auth/types"; import { UserInfo } from "@/api/user/types"; import { silentLogin } from '@/api/DesignForm/requestapi' import { useStorage } from "@vueuse/core"; const appTokenKey = import.meta.env.VITE_APP_TOKEN_KEY export const useUserStore = defineStore("user", () => { // state const tokenIng = useStorage(appTokenKey, ""); const nickname = ref(""); const avatar = ref(""); const roles = ref>([]); // 用户角色编码集合 → 判断路由权限 const perms = ref>([]); // 用户权限编码集合 → 判断按钮权限 const userKey = useStorage("userKey", ""); const userToken = useStorage("userToken", ""); const userInfoCont = ref(""); /** * 登录调用 * * @param {LoginData} * @returns */ function login(loginData: LoginData) { console.log("登陆使用12222",loginData); return new Promise((resolve, reject) => { loginApiIng(loginData) .then((response:any) => { //console.log("登陆使用",response); const { tokenType, accessToken, key, token,userinfo } = response.data; tokenIng.value = key + "_" + token; // Bearer eyJhbGciOiJIUzI1NiJ9.xxx.xxx userKey.value = key; userToken.value = token; // userInfoCont.value = userinfo resolve(); }) .catch((error:any) => { reject(error); }); }); } function loginSilent(loginData: any) { //console.log("登陆使用1",loginData); return new Promise((resolve, reject) => { silentLogin(loginData) .then((response:any) => { //console.log("登陆使用",response); const { tokenType, accessToken, key, token,userinfo } = response.data; tokenIng.value = key + "_" + token; // Bearer eyJhbGciOiJIUzI1NiJ9.xxx.xxx userKey.value = key; userToken.value = token; // userInfoCont.value = userinfo resolve(); return response.code }) .catch((error:any) => { reject(error); }); }); } // 获取信息(用户昵称、头像、角色集合、权限集合) function getInfo() { return new Promise((resolve, reject) => { // getUserInfo() // .then(({ data }) => { // if (!data) { // return reject("验证失败,请重新登录。"); // } // if (!data.roles || data.roles.length <= 0) { // reject("获取用户信息:角色必须是非null数组!"); // } // nickname.value = data.nickname; // avatar.value = data.avatar; // roles.value = data.roles; // perms.value = data.perms; // resolve(data); // }) // .catch((error) => { // reject(error); // }); getUserInfoIng() .then(({data})=>{ // console.log("获取用户信息:角色必须是非null数组!",data); // debugger; if (!data) { return reject("验证失败,请重新登录。"); } if (!data.roles || data.roles.length <= 0) { reject("获取用户信息:角色必须是非null数组!"); } nickname.value = data.nickname; avatar.value = data.avatar; roles.value = data.roles; perms.value = data.perms; userInfoCont.value = data resolve(data); }) .catch((error:any) => { reject(error); }); }); } // 注销 function logout() { return new Promise((resolve, reject) => { logoutApi() .then(() => { resetRouter(); resetToken(); location.reload(); // 清空路由 resolve(); }) .catch((error:any) => { reject(error); }); }); } // 重置 function resetToken() { tokenIng.value = ""; nickname.value = ""; userKey.value = ""; userToken.value = ""; userInfoCont.value = "" avatar.value = ""; roles.value = []; perms.value = []; } return { tokenIng, userKey, userToken, userInfoCont, nickname, avatar, roles, perms, login, getInfo, logout, resetToken, loginSilent }; }); // 非setup export function useUserStoreHook() { return useUserStore(store); }