|
|
@@ -1,5 +1,5 @@ |
|
|
|
import AppBar from "@/components/AppBar"; |
|
|
|
import { getServerSession } from "next-auth"; |
|
|
|
import { AuthOptions, getServerSession } from "next-auth"; |
|
|
|
import { authOptions, SessionWithTokens } from "@/config/authConfig"; |
|
|
|
import { redirect } from "next/navigation"; |
|
|
|
import Box from "@mui/material/Box"; |
|
|
@@ -11,13 +11,14 @@ import { SetupAxiosInterceptors } from "@/app/(main)/axios/axiosInstance"; |
|
|
|
import { CameraProvider } from "@/components/Cameras/CameraProvider"; |
|
|
|
import { UploadProvider } from "@/components/UploadProvider/UploadProvider"; |
|
|
|
import SessionProviderWrapper from "@/components/SessionProviderWrapper/SessionProviderWrapper"; |
|
|
|
import QrCodeScannerProvider from "@/components/QrCodeScannerProvider/QrCodeScannerProvider"; |
|
|
|
|
|
|
|
export default async function MainLayout({ |
|
|
|
children, |
|
|
|
}: { |
|
|
|
children: React.ReactNode; |
|
|
|
}) { |
|
|
|
const session = await getServerSession(authOptions) as SessionWithTokens; |
|
|
|
const session = await getServerSession<AuthOptions, SessionWithTokens>(authOptions); |
|
|
|
|
|
|
|
if (!session?.user) { |
|
|
|
redirect("/login"); |
|
|
@@ -27,7 +28,7 @@ export default async function MainLayout({ |
|
|
|
|
|
|
|
// Verify if the session is valid |
|
|
|
if (session) { |
|
|
|
SetupAxiosInterceptors(session?.accessToken ?? null); |
|
|
|
SetupAxiosInterceptors(session.accessToken); |
|
|
|
} |
|
|
|
|
|
|
|
return ( |
|
|
@@ -35,24 +36,26 @@ export default async function MainLayout({ |
|
|
|
<UploadProvider> |
|
|
|
<CameraProvider> |
|
|
|
<AxiosProvider> |
|
|
|
<> |
|
|
|
<AppBar |
|
|
|
profileName={session.user.name!} |
|
|
|
avatarImageSrc={session.user.image || undefined} |
|
|
|
/> |
|
|
|
<Box |
|
|
|
component="main" |
|
|
|
sx={{ |
|
|
|
marginInlineStart: { xs: 0, xl: NAVIGATION_CONTENT_WIDTH }, |
|
|
|
padding: { xs: "1rem", sm: "1.5rem", lg: "3rem" }, |
|
|
|
}} |
|
|
|
> |
|
|
|
<Stack spacing={2}> |
|
|
|
<Breadcrumb /> |
|
|
|
{children} |
|
|
|
</Stack> |
|
|
|
</Box> |
|
|
|
</> |
|
|
|
<QrCodeScannerProvider> |
|
|
|
<> |
|
|
|
<AppBar |
|
|
|
profileName={session.user.name!} |
|
|
|
avatarImageSrc={session.user.image || undefined} |
|
|
|
/> |
|
|
|
<Box |
|
|
|
component="main" |
|
|
|
sx={{ |
|
|
|
marginInlineStart: { xs: 0, xl: NAVIGATION_CONTENT_WIDTH }, |
|
|
|
padding: { xs: "1rem", sm: "1.5rem", lg: "3rem" }, |
|
|
|
}} |
|
|
|
> |
|
|
|
<Stack spacing={2}> |
|
|
|
<Breadcrumb /> |
|
|
|
{children} |
|
|
|
</Stack> |
|
|
|
</Box> |
|
|
|
</> |
|
|
|
</QrCodeScannerProvider> |
|
|
|
</AxiosProvider> |
|
|
|
</CameraProvider> |
|
|
|
</UploadProvider> |
|
|
|