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