From e9009ffdd5a88e559ab9686902feca572696b098 Mon Sep 17 00:00:00 2001 From: yoosangwook Date: Thu, 26 Sep 2024 14:58:32 +0900 Subject: [PATCH] fix: Add Sync SessionStore at userSession MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 세션 스토어와 유저 세션을 동기화 하는 로직추가 / layout 컴포넌트 코드 수정 --- src/app/layout.js | 24 +++++++++++++++++++++++- src/components/header/Header.jsx | 24 ++++++++++++++++++------ 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/app/layout.js b/src/app/layout.js index 4f7acb9d..b77e75d0 100644 --- a/src/app/layout.js +++ b/src/app/layout.js @@ -31,6 +31,28 @@ export default async function RootLayout({ children }) { // const isLoggedIn = await checkSession() const session = await getSession() console.log('session[layout]:', session) + + let sessionProps = {} + + if (session.isLoggedIn) { + sessionProps = { + userId: session.userId, + saleStoreId: session.saleStoreId, + name: session.name, + mail: session.mail, + tel: session.tel, + storeId: session.storeId, + userNm: session.userNm, + userNmKana: session.userNmKana, + category: session.category, + telNo: session.telNo, + fax: session.fax, + email: session.email, + pwdInitYn: session.pwdInitYn, + isLoggedIn: session.isLoggedIn, + } + } + if (!headerPathname.includes('/login') && !session.isLoggedIn) { redirect('/login') } @@ -41,7 +63,7 @@ export default async function RootLayout({ children }) { {/*{headerPathname !== '/login' && }*/}
-
+
diff --git a/src/components/header/Header.jsx b/src/components/header/Header.jsx index 9e84f642..456cb09f 100644 --- a/src/components/header/Header.jsx +++ b/src/components/header/Header.jsx @@ -1,13 +1,16 @@ 'use client' -import { Fragment, useState } from 'react' +import { Fragment, useCallback, useEffect, useState } from 'react' + import Link from 'next/link' -import { usePathname, useRouter } from 'next/navigation' +import { usePathname } from 'next/navigation' + +import { useRecoilState, useRecoilValue } from 'recoil' +import { dimmedStore, sessionStore } from '@/store/commonAtom' + import { useMessage } from '@/hooks/useMessage' import { logout } from '@/lib/authActions' import QSelectBox from '@/components/common/select/QSelectBox' -import { useRecoilValue } from 'recoil' -import { dimmedStore } from '@/store/commonAtom' export const ToggleonMouse = (e, act, target) => { const listWrap = e.target.closest(target) @@ -25,7 +28,8 @@ export const ToggleonMouse = (e, act, target) => { } export default function Header(props) { - const { loginedUserNm } = props + const { userSession } = props + const [sessionState, setSessionState] = useRecoilState(sessionStore) const { getMessage } = useMessage() const pathName = usePathname() // if (pathName.includes('login') || pathName.includes('join')) { @@ -65,6 +69,14 @@ export default function Header(props) { }, ] + const syncSession = useCallback(() => { + setSessionState({ ...userSession }) + }) + + useEffect(() => { + syncSession() + }, [userSession]) + const onChangeSelect = (option) => { setSelected(option) } @@ -125,7 +137,7 @@ export default function Header(props) {
- +