1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { defineStore } from "pinia";
- import { store } from "/@/store";
- import { userType } from "./types";
- import { useRouter } from "vue-router";
- import { getLogin, refreshToken } from "/@/api/user";
- import { storageLocal, storageSession } from "/@/utils/storage";
- import { getToken, setToken, removeToken } from "/@/utils/auth";
- import { useMultiTagsStoreHook } from "/@/store/modules/multiTags";
- const data = getToken();
- let token = "";
- let name = "";
- if (data) {
- const dataJson = JSON.parse(data);
- if (dataJson) {
- token = dataJson?.accessToken;
- name = dataJson?.name ?? "admin";
- }
- }
- export const useUserStore = defineStore({
- id: "pure-user",
- state: (): userType => ({
- token,
- name
- }),
- actions: {
- SET_TOKEN(token) {
- this.token = token;
- },
- SET_NAME(name) {
- this.name = name;
- },
- // 登入
- async loginByUsername(data) {
- return new Promise<void>((resolve, reject) => {
- getLogin(data)
- .then(data => {
- if (data) {
- setToken(data);
- resolve();
- }
- })
- .catch(error => {
- reject(error);
- });
- });
- },
- // 登出 清空缓存
- logOut() {
- this.token = "";
- this.name = "";
- removeToken();
- storageLocal.clear();
- storageSession.clear();
- useMultiTagsStoreHook().handleTags("equal", [
- {
- path: "/welcome",
- parentPath: "/",
- meta: {
- title: "menus.hshome",
- icon: "home-filled",
- i18n: true
- }
- }
- ]);
- useRouter().push("/login");
- },
- // 刷新token
- async refreshToken(data) {
- return refreshToken(data).then(data => {
- if (data) {
- setToken(data);
- return data;
- }
- });
- }
- }
- });
- export function useUserStoreHook() {
- return useUserStore(store);
- }
|