Pentest R111: contract-categories – Permission-String angeglichen
Pentester meldete 403 auf POST/PUT/DELETE /api/contract-categories/* für Admin trotz vorhandener contract-categories:*-Perms. Vermutete Regression aus R110, war aber schon seit dem allerersten Commit so: Route verlangte developer:access, während der Permission-Seed den Admins contract-categories:* gibt. Fix: Route auf contract-categories:create/update/delete umgestellt, konsistent mit den sechs Peer-Katalog-Endpunkten (platforms/ tariffs/cancellation-periods/… nutzen alle ressourcen-spezifische Perms). Kommentar aktualisiert. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -8,9 +8,16 @@ const router = Router();
|
||||
router.get('/', authenticate, contractCategoryController.getContractCategories);
|
||||
router.get('/:id', authenticate, contractCategoryController.getContractCategory);
|
||||
|
||||
// Ändern/Löschen nur mit Entwickler-Berechtigung (Vertragstypen erfordern Formular-Anpassungen)
|
||||
router.post('/', authenticate, requirePermission('developer:access'), contractCategoryController.createContractCategory);
|
||||
router.put('/:id', authenticate, requirePermission('developer:access'), contractCategoryController.updateContractCategory);
|
||||
router.delete('/:id', authenticate, requirePermission('developer:access'), contractCategoryController.deleteContractCategory);
|
||||
// Ändern/Löschen: `contract-categories:*` – wird per seed.ts an Admin-
|
||||
// Rollen vergeben. Vorher stand hier `developer:access` mit dem
|
||||
// Kommentar „Vertragstypen erfordern Formular-Anpassungen". Historische
|
||||
// Design-Restriktion, die aber im Widerspruch zum Permission-Seed stand
|
||||
// (Admin hatte `contract-categories:*` ohne Nutzen). Pentester R111 hat
|
||||
// die Diskrepanz aufgedeckt; angeglichen an die sechs Peer-Endpunkte
|
||||
// (platforms/tariffs/cancellation-periods/… nutzen alle ressourcen-
|
||||
// spezifische Perms statt developer:access).
|
||||
router.post('/', authenticate, requirePermission('contract-categories:create'), contractCategoryController.createContractCategory);
|
||||
router.put('/:id', authenticate, requirePermission('contract-categories:update'), contractCategoryController.updateContractCategory);
|
||||
router.delete('/:id', authenticate, requirePermission('contract-categories:delete'), contractCategoryController.deleteContractCategory);
|
||||
|
||||
export default router;
|
||||
|
||||
Reference in New Issue
Block a user