MOPC-App/src/app/(settings)/layout.tsx

56 lines
1.4 KiB
TypeScript

import { redirect } from 'next/navigation'
import { auth } from '@/lib/auth'
const ROLE_DASHBOARDS: Record<string, string> = {
SUPER_ADMIN: '/admin',
PROGRAM_ADMIN: '/admin',
JURY_MEMBER: '/jury',
MENTOR: '/mentor',
OBSERVER: '/observer',
}
export default async function SettingsLayout({
children,
}: {
children: React.ReactNode
}) {
const session = await auth()
if (!session?.user) {
redirect('/login')
}
const dashboardUrl = ROLE_DASHBOARDS[session.user.role] || '/login'
return (
<div className="min-h-screen bg-background">
<header className="sticky top-0 z-40 border-b bg-card">
<div className="container mx-auto flex h-16 max-w-3xl items-center px-4">
<a
href={dashboardUrl}
className="flex items-center gap-2 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground"
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
>
<path d="m15 18-6-6 6-6" />
</svg>
Back to Dashboard
</a>
</div>
</header>
<main className="container mx-auto max-w-3xl px-4 py-6 lg:py-8">
{children}
</main>
</div>
)
}