Files
content-factory/apps/frontend/src/widgets/role-navigation/model.ts
T

54 lines
1.1 KiB
TypeScript

import type { Role } from "@pipeline/shared";
export type NavigationItem = {
id: string;
label: string;
href: string;
roles: readonly Role[];
};
export const ROLE_NAVIGATION_ITEMS = [
{
id: "dashboard",
label: "Dashboard",
href: "/",
roles: ["ADMIN", "EDITOR"],
},
{
id: "new-article",
label: "New article",
href: "/articles/new",
roles: ["ADMIN", "EDITOR"],
},
{
id: "review",
label: "Review",
href: "/review",
roles: ["ADMIN", "EDITOR"],
},
{
id: "site-config",
label: "Site configuration",
href: "/admin/sites",
roles: ["ADMIN"],
},
{
id: "script-versions",
label: "Script versions",
href: "/admin/scripts",
roles: ["ADMIN"],
},
{
id: "agent-jobs",
label: "Agent jobs",
href: "/admin/jobs",
roles: ["ADMIN"],
},
] as const satisfies readonly NavigationItem[];
export function getRoleNavigationItems(role: Role): NavigationItem[] {
return ROLE_NAVIGATION_ITEMS.filter((item) =>
item.roles.some((allowedRole) => allowedRole === role),
);
}