blob: 8c11f31b361c34422e2ad7ce07ee4e1efc49c9d5 [file] [log] [blame]
Jiarenxiang38dcb052025-03-13 16:40:09 +08001import { checkRole, matchPermission } from './utils/permission';
2/**
3 * @see https://umijs.org/zh-CN/plugins/plugin-access
4 * */
5export default function access(initialState: { currentUser?: API.CurrentUser } | undefined) {
6 const { currentUser } = initialState ?? {};
7 const hasPerms = (perm: string) => {
8 return matchPermission(initialState?.currentUser?.permissions, perm);
9 };
10 const roleFiler = (route: { authority: string[] }) => {
11 return checkRole(initialState?.currentUser?.roles, route.authority);
12 };
13 return {
14 canAdmin: currentUser && currentUser.access === 'admin',
15 hasPerms,
16 roleFiler,
17 };
18}
19
20export function setSessionToken(
21 access_token: string | undefined,
22 refresh_token: string | undefined,
23 expireTime: number,
24): void {
25 if (access_token) {
26 localStorage.setItem('access_token', access_token);
27 } else {
28 localStorage.removeItem('access_token');
29 }
30 if (refresh_token) {
31 localStorage.setItem('refresh_token', refresh_token);
32 } else {
33 localStorage.removeItem('refresh_token');
34 }
35 localStorage.setItem('expireTime', `${expireTime}`);
36}
37
38export function getAccessToken() {
39 return localStorage.getItem('access_token');
40}
41
42export function getRefreshToken() {
43 return localStorage.getItem('refresh_token');
44}
45
46export function getTokenExpireTime() {
47 return localStorage.getItem('expireTime');
48}
49
50export function clearSessionToken() {
51 sessionStorage.removeItem('user');
52 localStorage.removeItem('access_token');
53 localStorage.removeItem('refresh_token');
54 localStorage.removeItem('expireTime');
55}