112 lines
2.7 KiB
TypeScript
Raw Normal View History

2025-02-13 02:29:50 +08:00
import { storageLocal } from "@pureadmin/utils";
import { useUserStoreHook } from "@/store/modules/user";
export interface UserInfo {
/** 用户名 */
username: string;
/** 用户性别 */
gender: number;
/** 用户昵称 */
nickname?: string;
/**用户邮箱 */
email?: string;
/**用户手机号 */
phone?: string;
/**用户角色 */
roles?: Array<string>;
/**用户权限 */
permissions?: Array<string>;
/**用户部门ID */
department_id?: string;
/**用户头像 */
avatar?: string;
/**用户数据库ID */
id?: string;
}
export const userTokenKey = "user-token";
export const userInfoKey = "user-info";
export interface UserToken {
/**
* Token
*/
accessToken: string;
/**
*
*/
expiresTime: number;
/**
* accessToken的接口时所需的token
*/
refreshToken: string;
}
/**存储用户Token信息 */
export function setToken(data: UserToken) {
useUserStoreHook().SET_ACCESSTOKEN(data.accessToken);
useUserStoreHook().SET_REFRESHTOKEN(data.refreshToken);
useUserStoreHook().SET_EXPIRES(data.expiresTime);
storageLocal().setItem(userTokenKey, data);
}
/**存储用户信息 */
export function setUserInfo(data: UserInfo) {
useUserStoreHook().SET_AVATAR(data.avatar);
useUserStoreHook().SET_USERNAME(data.username);
useUserStoreHook().SET_NICKNAME(data.nickname);
useUserStoreHook().SET_EMAIL(data.email);
useUserStoreHook().SET_PHONE(data.phone);
useUserStoreHook().SET_DEPARTMENT_ID(data.department_id);
useUserStoreHook().SET_ROLES(data.roles);
useUserStoreHook().SET_PERMISSIONS(data.permissions);
useUserStoreHook().SET_ID(data.id);
useUserStoreHook().SET_GENDER(data.gender);
storageLocal().setItem(userInfoKey, data);
}
/** 删除`token`以及key值为`user-info`的localStorage信息 */
export function removeToken() {
storageLocal().removeItem(userTokenKey);
}
/** 格式化tokenjwt格式 */
export const formatToken = (token: string): string => {
return "Bearer " + token;
};
/**
* Token信息
* @returns
*/
export function getTokenInfo(): {
isRefresh: boolean;
isExpire: boolean;
accesstoken: string;
refreshToken: string;
} {
const userStore = useUserStoreHook();
const expires = userStore?.expires ?? 0;
const now = Date.now();
const diff = expires - now / 1000;
const accessToken = userStore?.accessToken ?? "";
const refreshToken = userStore?.refreshToken ?? "";
if (diff > 0) {
return {
isRefresh: diff <= 1800000,
isExpire: false,
accesstoken: accessToken,
refreshToken: refreshToken
};
} else {
return {
isRefresh: true,
isExpire: true,
accesstoken: accessToken,
refreshToken: refreshToken
};
}
}