feat: implement admin access control in UsersLayout

This commit is contained in:
javayhu 2025-07-04 23:23:25 +08:00
parent cc9a15db8f
commit 8d17bd80c5

View File

@ -1,11 +1,21 @@
import { DashboardHeader } from '@/components/dashboard/dashboard-header'; import { DashboardHeader } from '@/components/dashboard/dashboard-header';
import { getSession } from '@/lib/server';
import { getTranslations } from 'next-intl/server'; import { getTranslations } from 'next-intl/server';
import { notFound } from 'next/navigation';
interface UsersLayoutProps { interface UsersLayoutProps {
children: React.ReactNode; children: React.ReactNode;
} }
export default async function UsersLayout({ children }: UsersLayoutProps) { export default async function UsersLayout({ children }: UsersLayoutProps) {
// if is demo website, allow user to access admin and user pages, but data is fake
const isDemo = process.env.NEXT_PUBLIC_DEMO_WEBSITE === 'true';
// Check if user is admin
const session = await getSession();
if (!session || (session.user.role !== 'admin' && !isDemo)) {
notFound();
}
const t = await getTranslations('Dashboard.admin'); const t = await getTranslations('Dashboard.admin');
const breadcrumbs = [ const breadcrumbs = [