feat: implement real user profile viewing and auth state

This commit is contained in:
Cauê Faleiros
2026-02-26 10:18:27 -03:00
parent a175315437
commit dda606ef9b
3 changed files with 54 additions and 26 deletions

View File

@@ -1,7 +1,7 @@
import React, { useState, useEffect } from 'react';
import { NavLink, useLocation, useNavigate } from 'react-router-dom';
import { LayoutDashboard, Users, UserCircle, Bell, Search, Menu, X, LogOut, Hexagon, Settings, Building2 } from 'lucide-react';
import { USERS } from '../constants';
import { getAttendances, getUsers, getUserById } from '../services/dataService';
import { User } from '../types';
const SidebarItem = ({ to, icon: Icon, label, collapsed }: { to: string, icon: any, label: string, collapsed: boolean }) => (
@@ -24,20 +24,33 @@ export const Layout: React.FC<{ children: React.ReactNode }> = ({ children }) =>
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
const location = useLocation();
const navigate = useNavigate();
const [currentUser, setCurrentUser] = useState<User>(USERS[1]); // Default to standard user fallback
const [currentUser, setCurrentUser] = useState<User | null>(null);
useEffect(() => {
const storedUserId = localStorage.getItem('ctms_user_id');
if (storedUserId) {
const user = USERS.find(u => u.id === storedUserId);
if (user) {
setCurrentUser(user);
const fetchCurrentUser = async () => {
const storedUserId = localStorage.getItem('ctms_user_id');
if (!storedUserId) {
navigate('/login');
return;
}
}
}, []);
try {
const user = await getUserById(storedUserId);
if (user) {
setCurrentUser(user);
} else {
navigate('/login');
}
} catch (err) {
console.error("Layout fetch failed:", err);
}
};
fetchCurrentUser();
}, [navigate]);
const handleLogout = () => {
localStorage.removeItem('ctms_user_id');
localStorage.removeItem('ctms_tenant_id');
navigate('/login');
};
@@ -52,6 +65,8 @@ export const Layout: React.FC<{ children: React.ReactNode }> = ({ children }) =>
return 'CTMS';
};
if (!currentUser) return null;
const isSuperAdmin = currentUser.role === 'super_admin';
return (