'use client';
import { ReactNode } from 'react';
import { Lock } from 'lucide-react';
import { useAuthStore } from '@/stores/useAuthStore';
import { useMemberStore } from '@/stores/useMemberStore';
import { hasPermission } from '@/lib/permissions';
/**
* 当前登录用户对某权限点的判定
* 未登录 / 找不到 role 时一律 false(最严格只读)
*/
export function useHasPermission(permission: string): boolean {
const user = useAuthStore((s) => s.user);
const role = useMemberStore((s) => s.roles.find((r) => r.id === user?.roleId));
return hasPermission(role, permission);
}
/**
* 路由级拦截:包裹整页,无权限显示 AccessDenied
*/
export function RouteGuard({ permission, children }: { permission: string; children: ReactNode }) {
const allowed = useHasPermission(permission);
if (!allowed) return
无权访问该模块
请联系管理员开通对应权限