Files
lotteryAdmin/src/lib/admin-nav-visibility.ts

18 lines
541 B
TypeScript

import type { AdminNavItem } from "@/modules/_config/admin-nav";
/** 已登录且拥有 `requiredAny` 中任一 slug 则显示;未配置 `requiredAny` 则始终显示。 */
export function adminNavItemVisible(
item: AdminNavItem,
permissionSlugs: readonly string[] | null | undefined,
): boolean {
const req = item.requiredAny;
if (req === undefined || req.length === 0) {
return true;
}
const set = permissionSlugs ?? [];
if (set.length === 0) {
return false;
}
return req.some((slug) => set.includes(slug));
}