Files
web/src/app/admin/layout.tsx

43 lines
1.1 KiB
TypeScript
Raw Normal View History

import {ReactNode} from 'react'
import Header from './_client/header'
import Navbar from './_client/navbar'
import Layout from './_client/layout'
2025-06-18 17:57:12 +08:00
import {getProfile} from '@/actions/auth'
import {redirect} from 'next/navigation'
import {ChangePasswordDialog} from '@/components/composites/dialogs/change-password-dialog'
import {RealnameAuthDialog} from '@/components/composites/dialogs/realname-auth-dialog'
export type AdminLayoutProps = {
children: ReactNode
}
export default async function AdminLayout(props: AdminLayoutProps) {
2025-06-18 17:57:12 +08:00
const resp = await getProfile()
const profile = resp.success ? resp.data : null
2025-06-18 17:57:12 +08:00
if (!profile) {
redirect('/login')
}
return (
<Layout
navbar={<Navbar/>}
2025-06-18 17:57:12 +08:00
header={<Header profile={profile}/>}
content={(
<>
{props.children}
<RealnameAuthDialog
hasAuthenticated={!!profile.id_token}
triggerClassName="hidden"
defaultOpen={!profile.id_token}
/>
<ChangePasswordDialog
triggerClassName="hidden"
defaultOpen={profile.has_password}
/>
</>
)}
/>
)
}