feat: implement admin access control in UsersLayout
This commit is contained in:
parent
cc9a15db8f
commit
8d17bd80c5
@ -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 = [
|
||||||
|
Loading…
Reference in New Issue
Block a user