puffin-app/app/admin/AdminLayoutClient.tsx

51 lines
1.1 KiB
TypeScript
Raw Normal View History

'use client';
import { useEffect } from 'react';
import { useRouter, usePathname } from 'next/navigation';
import { AdminSidebar } from '@/components/admin/AdminSidebar';
export default function AdminLayoutClient({
children,
}: {
children: React.ReactNode;
}) {
const router = useRouter();
const pathname = usePathname();
useEffect(() => {
// Skip auth check for login page
if (pathname === '/admin/login') {
return;
}
// Check authentication
const checkAuth = async () => {
try {
const response = await fetch('/api/admin/auth/verify');
if (!response.ok) {
router.push('/admin/login');
}
} catch (error) {
router.push('/admin/login');
}
};
checkAuth();
}, [pathname, router]);
// If on login page, render full-screen without sidebar
if (pathname === '/admin/login') {
return <>{children}</>;
}
// Dashboard/orders pages with sidebar
return (
<div className="min-h-screen bg-sail-white">
<AdminSidebar />
<main className="ml-64 p-8">
{children}
</main>
</div>
);
}