import JwtService from "@@/services/JwtService" import appStore from "@s" import apis from "@/api" import type { User } from "@@/types/User" import type { LoginData } from "@@/types/Account" import { use } from "echarts" export const useAuthStore = defineStore("auth", () => { const errors = ref({}) const user = ref({} as User) const isAuthenticated = ref(!!JwtService.getToken()) const setToken = (authToken: string) => { isAuthenticated.value = true user.value.token = authToken JwtService.saveToken(authToken) } const setUser = (data: any) => { const u = data.user user.value.tenantId = u.tenantId appStore.tenantStore.setTenantId(u.tenantId) user.value.userId = u.userId user.value.userName = u.userName user.value.nickName = u.nickName user.value.email = u.email user.value.phonenumber = u.phonenumber user.value.orgId = u.orgId user.value.orgName = u.org?.orgName user.value.remark = u.remark user.value.org = u.org user.value.role = u.roles ? u.roles[0] : [] changeAvatar(u.avatar) user.value.permissions = data.permissions || [] if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组 user.value.roles = data.roles } else { user.value.roles = ["ROLE_DEFAULT"] } } function isSuperAdmin() { return user.value.userName === "admin" || user.value.roles.includes("super_admin") } function changeAvatar(avatar: any) { user.value.avatar = avatar // avatar == "" || avatar == null // ? // ? getAssetPath("media/avatars/300-1.jpg") // undefined // : import.meta.env.VITE_APP_BASE_API + "/resource/oss" + avatar } const purgeAuth = () => { isAuthenticated.value = false appStore.tagViewStore.delAllViews() appStore.bodyConfigStore.resetLayoutConfig() appStore.tenantStore.setTenantId("") user.value = {} as User localCache.remove("tenantId") JwtService.destroyToken() } function login(loginData: LoginData) { return new Promise((resolve, reject) => { apis.loginApi .login(loginData) .then(({ data }) => { setToken(data.access_token) resolve(true) }) .catch((error) => { reject(error) }) }) } function socialLogin(type: string) { return apis.loginApi.authBinding(type) } function callback(loginData: LoginData) { return new Promise((resolve, reject) => { apis.loginApi .callback(loginData) .then(({ data }) => { setToken(data.access_token) resolve(true) }) .catch((error) => { reject(error) }) }) } function getInfo() { return new Promise((resolve, reject) => { apis.loginApi .getInfo() .then(({ data }) => { setUser(data) resolve(data) }) .catch((error) => { reject(error) }) }) } // 退出系统 function logout() { return new Promise((resolve, reject) => { apis.loginApi .logout() .then(() => { purgeAuth() resolve(true) }) .catch((error) => { reject(error) }) }) } return { errors, user, isAuthenticated, isSuperAdmin, login, socialLogin, callback, logout, getInfo, changeAvatar } })