1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import { defineStore } from "pinia";
- import { store } from "@/store";
- import type { userType } from "./types";
- import { routerArrays } from "@/layout/types";
- import { router, resetRouter } from "@/router";
- import { storageLocal } from "@pureadmin/utils";
- import { getLogin, refreshTokenApi } from "@/api/user";
- import type { UserResult, RefreshTokenResult } from "@/api/user";
- import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
- import { type DataInfo, setToken, removeToken, userKey } from "@/utils/auth";
- export const useUserStore = defineStore({
- id: "pure-user",
- state: (): userType => ({
- // 用户名
- username: localStorage.getItem("userName") ?? "",
- password: "",
- // 页面级别权限
- roles: storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? [],
- // 是否勾选了登录页的免登录
- isRemembered: false,
- // 登录页的免登录存储几天,默认7天
- loginDay: 7
- }),
- actions: {
- /** 存储用户名 */
- SET_USERNAME(username: string) {
- this.username = username;
- },
- /** 存储角色 */
- SET_ROLES(roles: Array<string>) {
- this.roles = roles;
- },
- /** 存储是否勾选了登录页的免登录 */
- SET_ISREMEMBERED(bool: boolean) {
- this.isRemembered = bool;
- },
- /** 设置登录页的免登录存储几天 */
- SET_LOGINDAY(value: number) {
- this.loginDay = Number(value);
- },
- /** 登入 */
- async loginByUsername(data) {
- return new Promise<UserResult>((resolve, reject) => {
- getLogin(data)
- .then(data => {
- if (data) {
- setToken(data.data);
- resolve(data);
- }
- })
- .catch(error => {
- reject(error);
- });
- });
- },
- /** 前端登出(不调用接口) */
- logOut() {
- this.username = "";
- this.roles = [];
- removeToken();
- useMultiTagsStoreHook().handleTags("equal", [...routerArrays]);
- resetRouter();
- router.push("/login");
- },
- /** 刷新`token` */
- async handRefreshToken(data) {
- return new Promise<RefreshTokenResult>((resolve, reject) => {
- refreshTokenApi(data)
- .then(data => {
- if (data) {
- setToken(data.data);
- resolve(data);
- }
- })
- .catch(error => {
- reject(error);
- });
- });
- }
- }
- });
- export function useUserStoreHook() {
- return useUserStore(store);
- }
|