tommy 1 неделю назад
Родитель
Сommit
1b23594ae8
3 измененных файлов: 17 добавлений и 4 удалений
  1. +14
    -1
      src/app/(main)/report/layout.tsx
  2. +2
    -2
      src/authorities.ts
  3. +1
    -1
      src/components/NavigationContent/NavigationContent.tsx

+ 14
- 1
src/app/(main)/report/layout.tsx Просмотреть файл

@@ -1,10 +1,23 @@
import { I18nProvider } from "@/i18n";
import { authOptions } from "@/config/authConfig";
import { AUTH } from "@/authorities";
import { getServerSession } from "next-auth";
import { redirect } from "next/navigation";

export default function ReportLayout({
export default async function ReportLayout({
children,
}: {
children: React.ReactNode;
}) {
const session = await getServerSession(authOptions);
const abilities = session?.user?.abilities ?? [];
const canAccess =
abilities.includes(AUTH.REPORT_MGMT) || abilities.includes(AUTH.ADMIN);

if (!canAccess) {
redirect("/dashboard");
}

return (
<I18nProvider namespaces={["report", "navigation", "common"]}>
{children}


+ 2
- 2
src/authorities.ts Просмотреть файл

@@ -16,6 +16,6 @@ export const AUTH = {
JOB_CREATE: "JOB_CREATE",
JOB_PICK: "JOB_PICK",
JOB_MAT: "JOB_MAT",
JOB_PROD: "JOB_PROD",
JOB_PROD: "JOB_PROD",
REPORT_MGMT: "REPORT_MGMT",
} as const;

+ 1
- 1
src/components/NavigationContent/NavigationContent.tsx Просмотреть файл

@@ -226,7 +226,7 @@ const NavigationContent: React.FC = () => {
icon: <Assessment />,
labelKey: "nav.report",
path: "/report",
requiredAbility: [AUTH.TESTING, AUTH.ADMIN],
requiredAbility: [AUTH.REPORT_MGMT, AUTH.ADMIN],
isHidden: false,
},
{


Загрузка…
Отмена
Сохранить