// Caminho: app/(manager)/layout.tsx "use client"; import type React from "react"; import { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; // Nossas importações centralizadas import { usuariosApi } from "@/services/usuariosApi"; import DashboardLayout, { UserProfile } from "@/components/layout/DashboardLayout"; import { dashboardConfig } from "@/config/dashboard.config"; interface ManagerLayoutProps { children: React.ReactNode; } export default function ManagerLayout({ children }: ManagerLayoutProps) { const [userProfile, setUserProfile] = useState(null); const [isLoading, setIsLoading] = useState(true); const router = useRouter(); useEffect(() => { const checkAuthentication = async () => { try { // 1. Busca o usuário logado via API const userData = await usuariosApi.getCurrentUser(); // 2. Pega a configuração específica do "gestor" const config = dashboardConfig.manager; if (!config) { throw new Error("Configuração para o perfil 'manager' não encontrada."); } // 3. Formata os dados para o perfil setUserProfile(config.getUserProfile(userData)); } catch (error) { // 4. Se falhar, redireciona para o login console.error("Falha na autenticação para gestor:", error); router.push("/login"); } finally { setIsLoading(false); } }; checkAuthentication(); }, [router]); // Enquanto a verificação estiver em andamento, mostra uma tela de carregamento if (isLoading) { return (

Verificando autenticação...

); } // Se não tiver perfil (redirect em andamento), não renderiza nada para evitar erros if (!userProfile) { return null; } // Pega os itens de menu da configuração const menuItems = dashboardConfig.manager.menuItems; // Renderiza o layout genérico com as props corretas return ( {children} ); }