| 作成者 | SHA1 | メッセージ | 日付 |
|---|---|---|---|
|
|
653e458792 | Session provider | 6ヶ月前 |
|
|
af4145e426 |
Merge branch 'master' of https://git.2fi-solutions.com/derek/FPSMS-frontend
# Conflicts: # src/app/(main)/layout.tsx # src/config/authConfig.ts |
6ヶ月前 |
|
|
b13b6d783b | seesion provider | 6ヶ月前 |
| @@ -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; | ||||
| }, | }, | ||||
| }, | }, | ||||