18 lines
541 B
TypeScript
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));
|
|
}
|