qcast-front/src/app/layout.js

95 lines
2.7 KiB
JavaScript

import { headers } from 'next/headers'
import { redirect } from 'next/navigation'
import { getSession } from '@/lib/authActions'
import RecoilRootWrapper from './RecoilWrapper'
import { QcastProvider } from './QcastProvider'
import SessionProvider from './SessionProvider'
import GlobalDataProvider from './GlobalDataProvider'
import Header from '@/components/header/Header'
import QModal from '@/components/common/modal/QModal'
import PopupManager from '@/components/common/popupManager/PopupManager'
import './globals.css'
import '../styles/style.scss'
import '../styles/contents.scss'
import Footer from '@/components/footer/Footer'
import GlobalLoadingProvider from './GlobalLoadingProvider'
/**
* 어플리케이션 메타데이터
* 서버 컴포넌트에 한해서 개별로 설정할 수 있음
*/
export const metadata = {
title: 'HANASYS DESIGN',
description: 'HANASYS DESIGN',
}
/**
* 어플리케이션 전체 레이아웃 컴포넌트
* @param {*} param0
* @returns
*/
export default async function RootLayout({ children }) {
const headersList = headers()
const headerPathname = headersList.get('x-pathname') || ''
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,
storeLvl: session.storeLvl,
groupId: session.groupId,
pwdInitYn: session.pwdInitYn,
custCd: session.custCd,
isLoggedIn: session.isLoggedIn,
builderNo: session.builderNo
}
}
if (!headerPathname.includes('/login') && !session.isLoggedIn) {
redirect('/login')
}
return (
<RecoilRootWrapper>
<GlobalDataProvider>
<html lang="en">
<body>
{headerPathname === '/login' || headerPathname === '/join' ? (
<QcastProvider>{children}</QcastProvider>
) : (
<QcastProvider>
<GlobalLoadingProvider />
<div className="wrap">
<Header userSession={sessionProps} />
<div className="content">
<SessionProvider useSession={sessionProps}>{children}</SessionProvider>
</div>
<Footer />
</div>
<QModal />
<PopupManager />
</QcastProvider>
)}
</body>
</html>
</GlobalDataProvider>
</RecoilRootWrapper>
)
}