diff --git a/src/app/layout.tsx b/src/app/layout.tsx index e7fbcf6..cc67df2 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,12 +1,16 @@ +import type { ReactNode } from 'react' import type { Metadata } from 'next' +import type { SessionData } from '@/types/Auth' import ReactQueryProviders from '@/providers/ReactQueryProvider' import EdgeProvider from '@/providers/EdgeProvider' import PopupController from '@/components/ui/PopupController' -import '@/styles/style.scss' +import { cookies } from 'next/headers' +import { getIronSession } from 'iron-session' +import { sessionOptions } from '@/libs/session' -import type { ReactNode } from 'react' +import '@/styles/style.scss' export const metadata: Metadata = { title: 'Create Next App', @@ -21,9 +25,14 @@ interface RootLayoutProps { } export default async function RootLayout({ children, header, footer, floatBtn }: RootLayoutProps): Promise { + const cookieStore = await cookies() + const session = await getIronSession(cookieStore, sessionOptions) + + const sessionData = JSON.stringify(session) + return ( - +
diff --git a/src/providers/EdgeProvider.tsx b/src/providers/EdgeProvider.tsx index 176cf06..4d789f3 100644 --- a/src/providers/EdgeProvider.tsx +++ b/src/providers/EdgeProvider.tsx @@ -5,12 +5,19 @@ import { usePopupController } from '@/store/popupController' import { useSideNavState } from '@/store/sideNavState' import { usePathname } from 'next/navigation' import { useEffect } from 'react' +import { useSessionStore } from '@/store/session' -export default function EdgeProvider({ children }: React.PropsWithChildren) { +interface EdgeProviderProps { + children: React.ReactNode + sessionData: string +} + +export default function EdgeProvider({ children, sessionData }: EdgeProviderProps) { const pathname = usePathname() const { setBackBtn } = useHeaderStore() const { reset } = useSideNavState() const { setAlertMsg, setAlertBtn, setAlert, setAlert2, setAlert2BtnYes, setAlert2BtnNo } = usePopupController() + const { session, setSession } = useSessionStore() /** * alert 함수 - window.alert 함수 대체 @@ -56,6 +63,10 @@ export default function EdgeProvider({ children }: React.PropsWithChildren) { ) return false } + setSession({ + ...session, + ...JSON.parse(sessionData), + }) }, []) /**