qcast-front/src/app/layout.js
2024-10-23 14:49:13 +09:00

82 lines
2.3 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 Header from '@/components/header/Header'
import QModal from '@/components/common/modal/QModal'
import Dimmed from '@/components/ui/Dimmed'
import SessionProvider from './SessionProvider'
import PopupManager from '@/components/common/popupManager/PopupManager'
import './globals.css'
import '../styles/style.scss'
import '../styles/contents.scss'
import Footer from '@/components/footer/Footer'
export const metadata = {
title: 'Create Next App',
description: 'Generated by create next app',
}
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,
isLoggedIn: session.isLoggedIn,
}
}
if (!headerPathname.includes('/login') && !session.isLoggedIn) {
redirect('/login')
}
return (
<RecoilRootWrapper>
<html lang="en">
<body>
{headerPathname === '/login' || headerPathname === '/join' ? (
<QcastProvider>{children}</QcastProvider>
) : (
<div className="wrap">
<Header userSession={sessionProps} />
<div className="content">
<Dimmed />
<QcastProvider>
<SessionProvider useSession={sessionProps}>{children}</SessionProvider>
</QcastProvider>
</div>
<Footer />
</div>
)}
<QModal />
<PopupManager />
</body>
</html>
</RecoilRootWrapper>
)
}