feat: 添加财务摘要接口,更新管理员抽奖模块和导航,优化权限管理逻辑
This commit is contained in:
17
src/lib/admin-nav-visibility.ts
Normal file
17
src/lib/admin-nav-visibility.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
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));
|
||||
}
|
||||
11
src/lib/admin-permissions.ts
Normal file
11
src/lib/admin-permissions.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
/** 当前登录管理员是否拥有 `required` 中任一权限(与 Laravel `prd.*` slug 对齐)。 */
|
||||
export function adminHasAnyPermission(
|
||||
permissionSlugs: readonly string[] | null | undefined,
|
||||
required: readonly string[],
|
||||
): boolean {
|
||||
const set = permissionSlugs ?? [];
|
||||
if (set.length === 0 || required.length === 0) {
|
||||
return false;
|
||||
}
|
||||
return required.some((slug) => set.includes(slug));
|
||||
}
|
||||
Reference in New Issue
Block a user