farther debugging for users

This commit is contained in:
2025-10-09 23:28:35 +02:00
parent 8b4886e5bd
commit 6a9ddea0c5
4 changed files with 34 additions and 8 deletions

View File

@@ -7,6 +7,8 @@ import { AuthRequest } from '../middleware/auth.js';
export const getEmployees = async (req: AuthRequest, res: Response): Promise<void> => { export const getEmployees = async (req: AuthRequest, res: Response): Promise<void> => {
try { try {
console.log('🔍 Fetching employees - User:', req.user);
const employees = await db.all<any>(` const employees = await db.all<any>(`
SELECT SELECT
id, email, name, role, is_active as isActive, id, email, name, role, is_active as isActive,
@@ -17,9 +19,12 @@ export const getEmployees = async (req: AuthRequest, res: Response): Promise<voi
ORDER BY name ORDER BY name
`); `);
console.log('✅ Employees found:', employees.length);
console.log('📋 Employees data:', employees);
res.json(employees); res.json(employees);
} catch (error) { } catch (error) {
console.error('Error fetching employees:', error); console.error('Error fetching employees:', error);
res.status(500).json({ error: 'Internal server error' }); res.status(500).json({ error: 'Internal server error' });
} }
}; };

View File

@@ -129,8 +129,17 @@ export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
}; };
const hasRole = (roles: string[]): boolean => { const hasRole = (roles: string[]): boolean => {
if (!user) return false; console.log('🔐 Checking roles - User:', user, 'Required roles:', roles);
return roles.includes(user.role);
if (!user) {
console.log('❌ No user found');
return false;
}
const hasRequiredRole = roles.includes(user.role);
console.log('✅ User role:', user.role, 'Has required role:', hasRequiredRole);
return hasRequiredRole;
}; };
useEffect(() => { useEffect(() => {

View File

@@ -25,19 +25,19 @@ const EmployeeManagement: React.FC = () => {
const loadEmployees = async () => { const loadEmployees = async () => {
try { try {
setLoading(true); setLoading(true);
console.log('Fetching fresh employee list'); console.log('🔄 Loading employees...');
// Add cache-busting parameter to prevent browser caching // Add cache-busting parameter to prevent browser caching
const data = await employeeService.getEmployees(); const data = await employeeService.getEmployees();
console.log('Received employees:', data.length); console.log('✅ Employees loaded:', data);
setEmployees(data); setEmployees(data);
} catch (err: any) { } catch (err: any) {
console.error('Error loading employees:', err); console.error('Error loading employees:', err);
showNotification({ showNotification({
type: 'error', type: 'error',
title: 'Fehler', title: 'Fehler',
message: 'Mitarbeiter konnten nicht geladen werden' message: 'Mitarbeiter konnten nicht geladen werden: ' + err.message
}); });
} finally { } finally {
setLoading(false); setLoading(false);

View File

@@ -13,15 +13,27 @@ const getAuthHeaders = () => {
export class EmployeeService { export class EmployeeService {
async getEmployees(): Promise<Employee[]> { async getEmployees(): Promise<Employee[]> {
console.log('🔄 Fetching employees from API...');
const token = localStorage.getItem('token');
console.log('🔑 Token exists:', !!token);
const response = await fetch(`${API_BASE_URL}/employees`, { const response = await fetch(`${API_BASE_URL}/employees`, {
headers: getAuthHeaders(), headers: getAuthHeaders(),
}); });
console.log('📡 Response status:', response.status);
if (!response.ok) { if (!response.ok) {
const errorText = await response.text();
console.error('❌ API Error:', errorText);
throw new Error('Failed to fetch employees'); throw new Error('Failed to fetch employees');
} }
return response.json(); const employees = await response.json();
console.log('✅ Employees received:', employees.length);
return employees;
} }
async getEmployee(id: string): Promise<Employee> { async getEmployee(id: string): Promise<Employee> {