Autor | SHA1 | Wiadomość | Data |
---|---|---|---|
|
653e458792 | Session provider | 2 miesięcy temu |
|
af4145e426 |
Merge branch 'master' of https://git.2fi-solutions.com/derek/FPSMS-frontend
# Conflicts: # src/app/(main)/layout.tsx # src/config/authConfig.ts |
2 miesięcy temu |
|
b13b6d783b | seesion provider | 2 miesięcy temu |
@@ -10,6 +10,7 @@ import { AxiosProvider } from "@/app/(main)/axios/AxiosProvider"; | |||||
import { SetupAxiosInterceptors } from "@/app/(main)/axios/axiosInstance"; | 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 QrCodeScannerProvider from "@/components/QrCodeScannerProvider/QrCodeScannerProvider"; | import QrCodeScannerProvider from "@/components/QrCodeScannerProvider/QrCodeScannerProvider"; | ||||
export default async function MainLayout({ | export default async function MainLayout({ | ||||
@@ -23,11 +24,15 @@ export default async function MainLayout({ | |||||
redirect("/login"); | redirect("/login"); | ||||
} | } | ||||
// console.log(session?.user); | |||||
// Verify if the session is valid | |||||
if (session) { | if (session) { | ||||
SetupAxiosInterceptors(session.accessToken); | SetupAxiosInterceptors(session.accessToken); | ||||
} | } | ||||
return ( | return ( | ||||
<SessionProviderWrapper session={session}> | |||||
<UploadProvider> | <UploadProvider> | ||||
<CameraProvider> | <CameraProvider> | ||||
<AxiosProvider> | <AxiosProvider> | ||||
@@ -53,6 +58,7 @@ export default async function MainLayout({ | |||||
</QrCodeScannerProvider> | </QrCodeScannerProvider> | ||||
</AxiosProvider> | </AxiosProvider> | ||||
</CameraProvider> | </CameraProvider> | ||||
</UploadProvider> | |||||
</UploadProvider> | |||||
</SessionProviderWrapper> | |||||
); | ); | ||||
} | } |
@@ -11,6 +11,7 @@ import { Button, Grid, Tab, Tabs, TabsProps, Typography } from "@mui/material"; | |||||
import QrModal from "../PoDetail/QrModal"; | import QrModal from "../PoDetail/QrModal"; | ||||
import { WarehouseResult } from "@/app/api/warehouse"; | import { WarehouseResult } from "@/app/api/warehouse"; | ||||
import NotificationIcon from '@mui/icons-material/NotificationImportant'; | import NotificationIcon from '@mui/icons-material/NotificationImportant'; | ||||
import { useSession } from "next-auth/react"; | |||||
type Props = { | type Props = { | ||||
po: PoResult[]; | po: PoResult[]; | ||||
@@ -32,6 +33,10 @@ const PoSearch: React.FC<Props> = ({ po, warehouse }) => { | |||||
return searchCriteria; | return searchCriteria; | ||||
}, [t, po]); | }, [t, po]); | ||||
const {data: session} = useSession(); | |||||
console.log(session); | |||||
const onDetailClick = useCallback( | const onDetailClick = useCallback( | ||||
(po: PoResult) => { | (po: PoResult) => { | ||||
router.push(`/po/edit?id=${po.id}`); | router.push(`/po/edit?id=${po.id}`); | ||||
@@ -0,0 +1,8 @@ | |||||
"use client"; | |||||
import { SessionProvider } from "next-auth/react"; | |||||
import { ReactNode } from "react"; | |||||
export default function SessionProviderWrapper({ children, session }: { children: ReactNode, session?: any }) { | |||||
return <SessionProvider session={session}>{children}</SessionProvider>; | |||||
} |
@@ -5,7 +5,8 @@ import { LOGIN_API_PATH } from "./api"; | |||||
export interface SessionWithTokens extends Session { | export interface SessionWithTokens extends Session { | ||||
accessToken: string | null; | accessToken: string | null; | ||||
refreshToken?: string; | refreshToken?: string; | ||||
abilities: string[] | |||||
abilities: string[]; | |||||
id?: string | null | |||||
} | } | ||||
@@ -27,6 +28,7 @@ export const authOptions: AuthOptions = { | |||||
}); | }); | ||||
const user = await res.json(); | const user = await res.json(); | ||||
if (res.ok && user) { | if (res.ok && user) { | ||||
return user; | return user; | ||||
@@ -43,18 +45,17 @@ export const authOptions: AuthOptions = { | |||||
// Add the data from user to the token | // Add the data from user to the token | ||||
const { token, user } = params; | const { token, user } = params; | ||||
const newToken = { ...token, ...user }; | const newToken = { ...token, ...user }; | ||||
return newToken; | return newToken; | ||||
}, | }, | ||||
session({ session, token }) { | session({ session, token }) { | ||||
const sessionWithToken: SessionWithTokens = { | const sessionWithToken: SessionWithTokens = { | ||||
...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, | |||||
accessToken: token.accessToken as string | null, | 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[] | ||||
}; | }; | ||||
return sessionWithToken; | return sessionWithToken; | ||||
}, | }, | ||||
}, | }, | ||||