- proxy_service.py: 将requests和WhitelistManager改为函数内延迟import, 避免启动时加载不需要的依赖;移除未使用的get_exit_ip_via_proxy导入 - account_service.py: 移除未使用的func、joinedload、AuditLog、 user_has_permission顶层导入
24 lines
693 B
TypeScript
24 lines
693 B
TypeScript
import { useCallback, useMemo } from 'react';
|
|
import { getUser, type AuthUser } from '../store/auth';
|
|
|
|
export function usePermissions(userOverride?: AuthUser | null) {
|
|
const user = userOverride === undefined ? getUser() : userOverride;
|
|
const permissions = useMemo(() => user?.permissions ?? [], [user]);
|
|
|
|
const permissionSet = useMemo(() => new Set(permissions), [permissions]);
|
|
|
|
const can = useCallback((permission: string) => permissionSet.has(permission), [permissionSet]);
|
|
|
|
const canAny = useCallback(
|
|
(items: string[]) => items.some((permission) => permissionSet.has(permission)),
|
|
[permissionSet],
|
|
);
|
|
|
|
return {
|
|
user,
|
|
can,
|
|
canAny,
|
|
permissions,
|
|
};
|
|
}
|