FPSMS-frontend
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 

56 řádky
1.6 KiB

  1. import AppBar from "@/components/AppBar";
  2. import { getServerSession } from "next-auth";
  3. import { authOptions } from "@/config/authConfig";
  4. import { redirect } from "next/navigation";
  5. import Box from "@mui/material/Box";
  6. import { NAVIGATION_CONTENT_WIDTH } from "@/config/uiConfig";
  7. import Stack from "@mui/material/Stack";
  8. import Breadcrumb from "@/components/Breadcrumb";
  9. import { AxiosProvider } from "@/app/(main)/axios/AxiosProvider";
  10. import { SetupAxiosInterceptors } from "@/app/(main)/axios/axiosInstance";
  11. import { CameraProvider } from "@/components/Cameras/CameraProvider";
  12. import { UploadProvider } from "@/components/UploadProvider/UploadProvider";
  13. export default async function MainLayout({
  14. children,
  15. }: {
  16. children: React.ReactNode;
  17. }) {
  18. const session = await getServerSession(authOptions);
  19. if (!session?.user) {
  20. redirect("/login");
  21. }
  22. if (session) {
  23. SetupAxiosInterceptors(session?.accessToken);
  24. }
  25. return (
  26. <UploadProvider>
  27. <CameraProvider>
  28. <AxiosProvider>
  29. <>
  30. <AppBar
  31. profileName={session.user.name!}
  32. avatarImageSrc={session.user.image || undefined}
  33. />
  34. <Box
  35. component="main"
  36. sx={{
  37. marginInlineStart: { xs: 0, xl: NAVIGATION_CONTENT_WIDTH },
  38. padding: { xs: "1rem", sm: "1.5rem", lg: "3rem" },
  39. }}
  40. >
  41. <Stack spacing={2}>
  42. <Breadcrumb />
  43. {children}
  44. </Stack>
  45. </Box>
  46. </>
  47. </AxiosProvider>
  48. </CameraProvider>
  49. </UploadProvider>
  50. );
  51. }