mirror of
https://github.com/donpat1to/Schichtenplaner.git
synced 2025-12-01 15:05:45 +01:00
farther debugging for users
This commit is contained in:
@@ -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' });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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(() => {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
|||||||
Reference in New Issue
Block a user