feat(admin): reorganize housekeeping and strengthen shared workflows
This commit is contained in:
1 parent
35f66d879f
commit
a070004e7b
35 files changed
+1667
-462
No files matched your search
@@ -0,0 +1,32 @@
|
||||
import { cache } from "react";
|
||||
import { collectNavPermissionSlugs } from "@/lib/admin-nav";
|
||||
import {
|
||||
ADMIN_NAV_CONFIG_KEY,
|
||||
parseAdminNavConfig,
|
||||
} from "@/lib/admin-nav-config";
|
||||
import { canAccess, getAdminContext, PERMS } from "@/lib/permissions";
|
||||
import { siteSettings } from "@/lib/services/site-settings";
|
||||
|
||||
export const loadAdminNavigation = cache(async () => {
|
||||
const [{ session, permissions }, raw] = await Promise.all([
|
||||
getAdminContext(),
|
||||
siteSettings.get(ADMIN_NAV_CONFIG_KEY, ""),
|
||||
]);
|
||||
const hasDashboard = canAccess(
|
||||
permissions,
|
||||
PERMS.ADMIN_DASHBOARD,
|
||||
session.user.rank,
|
||||
);
|
||||
return {
|
||||
isSuperAdmin: permissions.isSuperAdmin,
|
||||
allowedPermissions: permissions.isSuperAdmin
|
||||
? []
|
||||
: collectNavPermissionSlugs().filter(
|
||||
(slug) =>
|
||||
canAccess(permissions, slug, session.user.rank) ||
|
||||
(hasDashboard &&
|
||||
(slug.endsWith(".view") || slug === PERMS.ADMIN_DASHBOARD)),
|
||||
),
|
||||
navConfig: parseAdminNavConfig(raw),
|
||||
};
|
||||
});
|
||||
Reference in new issue
Block a user