import React, { useState, useEffect } from 'react'; import { HashRouter as Router, Routes, Route, Navigate, useLocation } from 'react-router-dom'; import { Layout } from './components/Layout'; import { Dashboard } from './pages/Dashboard'; import { UserDetail } from './pages/UserDetail'; import { AttendanceDetail } from './pages/AttendanceDetail'; import { SuperAdmin } from './pages/SuperAdmin'; import { TeamManagement } from './pages/TeamManagement'; import { Teams } from './pages/Teams'; import { Login } from './pages/Login'; import { ForgotPassword } from './pages/ForgotPassword'; import { ResetPassword } from './pages/ResetPassword'; import { UserProfile } from './pages/UserProfile'; import { getUserById, logout } from './services/dataService'; import { User } from './types'; const AuthGuard: React.FC<{ children: React.ReactNode, roles?: string[] }> = ({ children, roles }) => { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); const location = useLocation(); useEffect(() => { const checkAuth = async () => { const storedUserId = localStorage.getItem('ctms_user_id'); const storedToken = localStorage.getItem('ctms_token'); if (!storedUserId || !storedToken || storedToken === 'undefined' || storedToken === 'null') { if (storedToken) logout(); // Limpar se for "undefined" string setLoading(false); return; } try { const fetchedUser = await getUserById(storedUserId); if (fetchedUser && fetchedUser.status === 'active') { setUser(fetchedUser); } else { logout(); setUser(null); } } catch (err) { console.error("Auth check failed", err); logout(); setUser(null); } finally { setLoading(false); } }; checkAuth(); }, [location.pathname]); if (loading) { return
Carregando...
; } if (!user) { return ; } if (roles && !roles.includes(user.role)) { return ; } return {children}; }; const App: React.FC = () => { return ( } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> ); }; export default App;