FPSMS-frontend
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

28 lines
791 B

  1. import { I18nProvider } from "@/i18n";
  2. import { authOptions } from "@/config/authConfig";
  3. import { AUTH, hasAbility } from "@/authorities";
  4. import { getServerSession } from "next-auth";
  5. import { redirect } from "next/navigation";
  6. /** Route board and shop/truck lane pages: ADMIN or 車線 (TRUCK_LANE). */
  7. export default async function ShopSettingsLayout({
  8. children,
  9. }: {
  10. children: React.ReactNode;
  11. }) {
  12. const session = await getServerSession(authOptions);
  13. const abilities = session?.user?.abilities ?? [];
  14. const canAccess =
  15. hasAbility(abilities, AUTH.TRUCK_LANE) || hasAbility(abilities, AUTH.ADMIN);
  16. if (!canAccess) {
  17. redirect("/dashboard");
  18. }
  19. return (
  20. <I18nProvider namespaces={["shop", "navigation", "common"]}>
  21. {children}
  22. </I18nProvider>
  23. );
  24. }