97f8baf502
- add optional `permission` field to nav items in registry - filter nav items by user permissions in `buildNavigationSections` - auto-hide sections when all their items are filtered out - fetch user permissions in `AdminLayout.server.js` and pass to navigation builder - update docs and README to document `permission` param and new signature
28 lines
931 B
JavaScript
28 lines
931 B
JavaScript
import AdminShell from './components/AdminShell.js';
|
|
import { protectAdmin } from './protect.js';
|
|
import { buildNavigationSections, buildBottomNavItems } from './navigation.js';
|
|
import { logoutAction } from '@zen/core/features/auth/actions';
|
|
import { getAppName } from '@zen/core';
|
|
import { getUserPermissions } from '@zen/core/users';
|
|
import './widgets/index.server.js';
|
|
|
|
export default async function AdminLayout({ children }) {
|
|
const session = await protectAdmin();
|
|
const appName = getAppName();
|
|
const permissions = await getUserPermissions(session.user.id);
|
|
const navigationSections = buildNavigationSections('/', permissions);
|
|
const bottomNavItems = buildBottomNavItems('/');
|
|
|
|
return (
|
|
<AdminShell
|
|
user={session.user}
|
|
onLogout={logoutAction}
|
|
appName={appName}
|
|
navigationSections={navigationSections}
|
|
bottomNavItems={bottomNavItems}
|
|
>
|
|
{children}
|
|
</AdminShell>
|
|
);
|
|
}
|