blob: 8c11f31b361c34422e2ad7ce07ee4e1efc49c9d5 [file] [log] [blame] [edit]
import { checkRole, matchPermission } from './utils/permission';
/**
* @see https://umijs.org/zh-CN/plugins/plugin-access
* */
export default function access(initialState: { currentUser?: API.CurrentUser } | undefined) {
const { currentUser } = initialState ?? {};
const hasPerms = (perm: string) => {
return matchPermission(initialState?.currentUser?.permissions, perm);
};
const roleFiler = (route: { authority: string[] }) => {
return checkRole(initialState?.currentUser?.roles, route.authority);
};
return {
canAdmin: currentUser && currentUser.access === 'admin',
hasPerms,
roleFiler,
};
}
export function setSessionToken(
access_token: string | undefined,
refresh_token: string | undefined,
expireTime: number,
): void {
if (access_token) {
localStorage.setItem('access_token', access_token);
} else {
localStorage.removeItem('access_token');
}
if (refresh_token) {
localStorage.setItem('refresh_token', refresh_token);
} else {
localStorage.removeItem('refresh_token');
}
localStorage.setItem('expireTime', `${expireTime}`);
}
export function getAccessToken() {
return localStorage.getItem('access_token');
}
export function getRefreshToken() {
return localStorage.getItem('refresh_token');
}
export function getTokenExpireTime() {
return localStorage.getItem('expireTime');
}
export function clearSessionToken() {
sessionStorage.removeItem('user');
localStorage.removeItem('access_token');
localStorage.removeItem('refresh_token');
localStorage.removeItem('expireTime');
}