Browse Source

Merge branch 'master' of https://git.2fi-solutions.com/derek/FPSMS-frontend

# Conflicts:
#	src/app/(main)/layout.tsx
#	src/config/authConfig.ts
production_process
MSI\2Fi 2 months ago
parent
commit
af4145e426
2 changed files with 27 additions and 23 deletions
  1. +24
    -21
      src/app/(main)/layout.tsx
  2. +3
    -2
      src/config/authConfig.ts

+ 24
- 21
src/app/(main)/layout.tsx View File

@@ -1,5 +1,5 @@
import AppBar from "@/components/AppBar"; import AppBar from "@/components/AppBar";
import { getServerSession } from "next-auth";
import { AuthOptions, getServerSession } from "next-auth";
import { authOptions, SessionWithTokens } from "@/config/authConfig"; import { authOptions, SessionWithTokens } from "@/config/authConfig";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
import Box from "@mui/material/Box"; import Box from "@mui/material/Box";
@@ -11,13 +11,14 @@ import { SetupAxiosInterceptors } from "@/app/(main)/axios/axiosInstance";
import { CameraProvider } from "@/components/Cameras/CameraProvider"; import { CameraProvider } from "@/components/Cameras/CameraProvider";
import { UploadProvider } from "@/components/UploadProvider/UploadProvider"; import { UploadProvider } from "@/components/UploadProvider/UploadProvider";
import SessionProviderWrapper from "@/components/SessionProviderWrapper/SessionProviderWrapper"; import SessionProviderWrapper from "@/components/SessionProviderWrapper/SessionProviderWrapper";
import QrCodeScannerProvider from "@/components/QrCodeScannerProvider/QrCodeScannerProvider";


export default async function MainLayout({ export default async function MainLayout({
children, children,
}: { }: {
children: React.ReactNode; children: React.ReactNode;
}) { }) {
const session = await getServerSession(authOptions) as SessionWithTokens;
const session = await getServerSession<AuthOptions, SessionWithTokens>(authOptions);


if (!session?.user) { if (!session?.user) {
redirect("/login"); redirect("/login");
@@ -27,7 +28,7 @@ export default async function MainLayout({


// Verify if the session is valid // Verify if the session is valid
if (session) { if (session) {
SetupAxiosInterceptors(session?.accessToken ?? null);
SetupAxiosInterceptors(session.accessToken);
} }


return ( return (
@@ -35,24 +36,26 @@ export default async function MainLayout({
<UploadProvider> <UploadProvider>
<CameraProvider> <CameraProvider>
<AxiosProvider> <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> </AxiosProvider>
</CameraProvider> </CameraProvider>
</UploadProvider> </UploadProvider>


+ 3
- 2
src/config/authConfig.ts View File

@@ -3,12 +3,13 @@ import CredentialsProvider from "next-auth/providers/credentials";
import { LOGIN_API_PATH } from "./api"; import { LOGIN_API_PATH } from "./api";


export interface SessionWithTokens extends Session { export interface SessionWithTokens extends Session {
accessToken?: string;
accessToken: string | null;
refreshToken?: string; refreshToken?: string;
abilities: string[]; abilities: string[];
id?: string | null id?: string | null
} }



export const authOptions: AuthOptions = { export const authOptions: AuthOptions = {
debug: process.env.NODE_ENV === "development", debug: process.env.NODE_ENV === "development",
providers: [ providers: [
@@ -51,7 +52,7 @@ export const authOptions: AuthOptions = {
...session, ...session,
// Add the data from the token to the session // Add the data from the token to the session
id: token.id as string | undefined, id: token.id as string | undefined,
accessToken: token.accessToken as string | undefined,
accessToken: token.accessToken as string | null,
refreshToken: token.refreshToken as string | undefined, refreshToken: token.refreshToken as string | undefined,
abilities: token.abilities as string[] abilities: token.abilities as string[]
}; };


Loading…
Cancel
Save