fix: resolve infinite loading in Layout and add auth redirect
All checks were successful
Build and Deploy / build-and-push (push) Successful in 1m12s
All checks were successful
Build and Deploy / build-and-push (push) Successful in 1m12s
This commit is contained in:
@@ -29,23 +29,39 @@ export const Layout: React.FC<{ children: React.ReactNode }> = ({ children }) =>
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchCurrentUser = async () => {
|
const fetchCurrentUser = async () => {
|
||||||
const storedUserId = localStorage.getItem('ctms_user_id');
|
const storedUserId = localStorage.getItem('ctms_user_id');
|
||||||
if (storedUserId) {
|
|
||||||
|
if (!storedUserId) {
|
||||||
|
navigate('/login');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
const user = await getUserById(storedUserId);
|
const user = await getUserById(storedUserId);
|
||||||
if (user) {
|
if (user) {
|
||||||
setCurrentUser(user);
|
setCurrentUser(user);
|
||||||
|
} else {
|
||||||
|
// User ID exists in storage but not in DB (deleted user?)
|
||||||
|
localStorage.removeItem('ctms_user_id');
|
||||||
|
navigate('/login');
|
||||||
}
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.error("Failed to fetch user:", err);
|
||||||
|
// Fallback or error state
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
fetchCurrentUser();
|
fetchCurrentUser();
|
||||||
}, []);
|
}, [navigate]);
|
||||||
|
|
||||||
const handleLogout = () => {
|
const handleLogout = () => {
|
||||||
localStorage.removeItem('ctms_user_id');
|
localStorage.removeItem('ctms_user_id');
|
||||||
|
localStorage.removeItem('ctms_tenant_id');
|
||||||
navigate('/login');
|
navigate('/login');
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!currentUser) {
|
if (!currentUser) {
|
||||||
return <div className="flex h-screen items-center justify-center bg-slate-50">Carregando...</div>;
|
const storedUserId = localStorage.getItem('ctms_user_id');
|
||||||
|
if (!storedUserId) return null; // Will redirect in useEffect
|
||||||
|
return <div className="flex h-screen items-center justify-center bg-slate-50 text-slate-400">Autenticando...</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const isSuperAdmin = currentUser.role === 'super_admin';
|
const isSuperAdmin = currentUser.role === 'super_admin';
|
||||||
|
|||||||
Reference in New Issue
Block a user