zhangwei
2025-08-22 83af3dd309889489f541fc8e21894c9f79e5788c
src/utils/auth.ts
@@ -2,6 +2,7 @@
import { useUserStoreHook } from "@/store/modules/user";
import { storageLocal, isString, isIncludeAllChildren } from "@pureadmin/utils";
import type { nowRoleType } from "@/store/types";
import type { LoginResult, RoleItem } from "@/api/types";
export interface DataInfo<T> {
  /** token */
@@ -16,10 +17,13 @@
  username?: string;
  /** 昵称 */
  nickname?: string;
  /** 当前登录用户的角色列表 */
  exRoles?: RoleItem[];
  /** 当前登录用户的角色 */
  exRoles?: Array<string>;
  roles?: Array<string>;
  /** 当前登录用户的按钮级别权限 */
  permissions?: Array<string>;
  isManager: boolean;
}
/**
 * AdminResult_CusExtendDto,全局返回结果
@@ -135,7 +139,7 @@
  /**
   * 交易主体 代码 同角色代码
   */
  transactionCode: string;
  transactionCode?: string;
  /**
   * 交易主体名称
   */
@@ -170,7 +174,7 @@
 * 将`accessToken`、`expires`、`refreshToken`这三条信息放在key值为authorized-token的cookie里(过期自动销毁)
 * 将`avatar`、`username`、`nickname`、`exRoles`、`permissions`、`refreshToken`、`expires`这七条信息放在key值为`user-info`的localStorage里(利用`multipleTabsKey`当浏览器完全关闭后自动销毁)
 */
export function setToken(data: DataInfo<Date>) {
export function setToken(data: LoginResult) {
  let expires = 0;
  const { accessToken, refreshToken } = data;
  const { isRemembered, loginDay } = useUserStoreHook();
@@ -193,12 +197,22 @@
      : {}
  );
  function setUserKey({ avatar, username, nickname, exRoles, permissions }) {
  function setUserKey({
    avatar,
    username,
    nickname,
    exRoles,
    permissions,
    roles,
    isManager
  }) {
    useUserStoreHook().SET_AVATAR(avatar);
    useUserStoreHook().SET_USERNAME(username);
    useUserStoreHook().SET_NICKNAME(nickname);
    useUserStoreHook().SET_ROLES(exRoles);
    useUserStoreHook().SET_EXROLES(exRoles);
    useUserStoreHook().SET_ROLES(roles);
    useUserStoreHook().SET_PERMS(permissions);
    useUserStoreHook().SET_ISMANAGER(isManager);
    storageLocal().setItem(userKey, {
      refreshToken,
      expires,
@@ -206,18 +220,22 @@
      username,
      nickname,
      exRoles,
      permissions
      roles,
      permissions,
      isManager
    });
  }
  if (data.exRoles) {
    const { username, exRoles } = data;
  if (data.exRoles && data.roles) {
    const { username, exRoles, roles, isManager } = data;
    setUserKey({
      avatar: data?.avatar ?? "",
      username,
      nickname: data?.nickname ?? "",
      exRoles,
      permissions: data?.permissions ?? []
      roles,
      permissions: data?.permissions ?? [],
      isManager
    });
  } else {
    const avatar =
@@ -228,14 +246,20 @@
      storageLocal().getItem<DataInfo<number>>(userKey)?.nickname ?? "";
    const exRoles =
      storageLocal().getItem<DataInfo<number>>(userKey)?.exRoles ?? [];
    const roles =
      storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? [];
    const permissions =
      storageLocal().getItem<DataInfo<number>>(userKey)?.permissions ?? [];
    const isManager =
      storageLocal().getItem<DataInfo<number>>(userKey)?.isManager ?? false;
    setUserKey({
      avatar,
      username,
      nickname,
      exRoles,
      permissions
      roles,
      permissions,
      isManager
    });
  }
}
@@ -249,8 +273,8 @@
  storageLocal().setItem(userKey, obj);
}
export function setRoleListInfo(data: DataInfo<string>) {
  useUserStoreHook().SET_ROLES_LIST(data);
export function setRoleListInfo(data: RoleItem[]) {
  useUserStoreHook().SET_EXROLES_LIST(data);
  storageLocal().setItem("rolesList", data);
}
@@ -260,8 +284,9 @@
    const obj = list.find(item => {
      return item.code == data.code;
    });
    data = { ...obj, ...data };
    data = Object.assign(obj, data);
  }
  useUserStoreHook().SET_ROLES([data.name]);
  useUserStoreHook().SET_NOW_ROLE(data);
  storageLocal().setItem("nowRole", data);
}