fixed auth handling for access control

This commit is contained in:
2025-10-21 10:23:17 +02:00
parent 5254d3823a
commit 59b09b663e
3 changed files with 8 additions and 10 deletions

View File

@@ -19,7 +19,7 @@ const router = express.Router();
router.use(authMiddleware); router.use(authMiddleware);
// Employee CRUD Routes // Employee CRUD Routes
router.get('/', requireRole(['admin']), getEmployees); router.get('/', authMiddleware, getEmployees);
router.get('/:id', requireRole(['admin', 'instandhalter']), getEmployee); router.get('/:id', requireRole(['admin', 'instandhalter']), getEmployee);
router.post('/', requireRole(['admin']), createEmployee); router.post('/', requireRole(['admin']), createEmployee);
router.put('/:id', requireRole(['admin']), updateEmployee); router.put('/:id', requireRole(['admin']), updateEmployee);

View File

@@ -20,18 +20,12 @@ router.use(authMiddleware);
// GET all shift plans (including templates) // GET all shift plans (including templates)
router.get('/' , authMiddleware, getShiftPlans); router.get('/' , authMiddleware, getShiftPlans);
// GET templates only
//router.get('/templates', getTemplates);
// GET specific shift plan or template // GET specific shift plan or template
router.get('/:id', authMiddleware, getShiftPlan); router.get('/:id', authMiddleware, getShiftPlan);
// POST create new shift plan // POST create new shift plan
router.post('/', requireRole(['admin', 'instandhalter']), createShiftPlan); router.post('/', requireRole(['admin', 'instandhalter']), createShiftPlan);
// POST create new plan from template
//router.post('/from-template', requireRole(['admin', 'instandhalter']), createFromTemplate);
// POST create new plan from preset // POST create new plan from preset
router.post('/from-preset', requireRole(['admin', 'instandhalter']), createFromPreset); router.post('/from-preset', requireRole(['admin', 'instandhalter']), createFromPreset);

View File

@@ -135,8 +135,12 @@ export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
}; };
const hasRole = (roles: string[]): boolean => { const hasRole = (roles: string[]): boolean => {
if (!user) return false; if (!user || !user.roles || user.roles.length === 0) return false;
return roles.length != 0;
// Check if user has at least one of the required roles
return roles.some(requiredRole =>
user.roles!.includes(requiredRole)
);
}; };
useEffect(() => { useEffect(() => {