1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import Cookies from "js-cookie";
- import { storageLocal } from "@pureadmin/utils";
- import { useUserStoreHook } from "@/store/modules/user";
- export interface DataInfo<T> {
-
- accessToken: string;
-
- expires: T;
-
- refreshToken: string;
-
- username?: string;
-
- roles?: Array<string>;
- }
- export const userKey = "user-info";
- export const TokenKey = "authorized-token";
- export const multipleTabsKey = "multiple-tabs";
- export function getToken(): DataInfo<number> {
-
- return Cookies.get(TokenKey)
- ? JSON.parse(Cookies.get(TokenKey))
- : storageLocal().getItem(userKey);
- }
- export function setToken(data: DataInfo<Date>) {
- let expires = 0;
- const { accessToken, refreshToken } = data;
- const { isRemembered, loginDay } = useUserStoreHook();
- expires = new Date(data.expires).getTime();
- const cookieString = JSON.stringify({ accessToken, expires });
- expires > 0
- ? Cookies.set(TokenKey, cookieString, {
- expires: (expires - Date.now()) / 86400000
- })
- : Cookies.set(TokenKey, cookieString);
- Cookies.set(
- multipleTabsKey,
- "true",
- isRemembered
- ? {
- expires: loginDay
- }
- : {}
- );
- function setUserKey(username: string, roles: Array<string>) {
- useUserStoreHook().SET_USERNAME(username);
- useUserStoreHook().SET_ROLES(roles);
- storageLocal().setItem(userKey, {
- refreshToken,
- expires,
- username,
- roles
- });
- }
- if (data.username && data.roles) {
- const { username, roles } = data;
- setUserKey(username, roles);
- } else {
- const username =
- storageLocal().getItem<DataInfo<number>>(userKey)?.username ?? "";
- const roles =
- storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? [];
- setUserKey(username, roles);
- }
- }
- export function removeToken() {
- Cookies.remove(TokenKey);
- Cookies.remove(multipleTabsKey);
- storageLocal().removeItem(userKey);
- }
- export const formatToken = (token: string): string => {
- return "Bearer " + token;
- };
|