FPSMS-frontend
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 

65 linhas
2.1 KiB

  1. import AppBar from "@/components/AppBar";
  2. import { AuthOptions, getServerSession } from "next-auth";
  3. import { authOptions, SessionWithTokens } 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. import SessionProviderWrapper from "@/components/SessionProviderWrapper/SessionProviderWrapper";
  14. import QrCodeScannerProvider from "@/components/QrCodeScannerProvider/QrCodeScannerProvider";
  15. export default async function MainLayout({
  16. children,
  17. }: {
  18. children: React.ReactNode;
  19. }) {
  20. const session = await getServerSession<AuthOptions, SessionWithTokens>(authOptions);
  21. if (!session?.user) {
  22. redirect("/login");
  23. }
  24. console.log(session?.user);
  25. // Verify if the session is valid
  26. if (session) {
  27. SetupAxiosInterceptors(session.accessToken);
  28. }
  29. return (
  30. <SessionProviderWrapper session={session}>
  31. <UploadProvider>
  32. <CameraProvider>
  33. <AxiosProvider>
  34. <QrCodeScannerProvider>
  35. <>
  36. <AppBar
  37. profileName={session.user.name!}
  38. avatarImageSrc={session.user.image || undefined}
  39. />
  40. <Box
  41. component="main"
  42. sx={{
  43. marginInlineStart: { xs: 0, xl: NAVIGATION_CONTENT_WIDTH },
  44. padding: { xs: "1rem", sm: "1.5rem", lg: "3rem" },
  45. }}
  46. >
  47. <Stack spacing={2}>
  48. <Breadcrumb />
  49. {children}
  50. </Stack>
  51. </Box>
  52. </>
  53. </QrCodeScannerProvider>
  54. </AxiosProvider>
  55. </CameraProvider>
  56. </UploadProvider>
  57. </SessionProviderWrapper>
  58. );
  59. }