Ik ben momenteel bezig met het Role Base Access Control (RBAC) gedeelte van een MVC Framework. Het framework kent modules, en een module kent acties.
Wanneer een actie aangeroepen wordt, zal voordat de execute() methode aangeroepen wordt eerst gecontroleert moeten worden of de User bepaalde rechten heeft;
Allemaal leuk en aardig, en dit valt allemaal prima te behappen. Wat nou, als je een gebruiker in een bepaalde Role alleen zijn eigen pagina's wil laten bewerken. Je wil daarvoor niet twee Actions maken met elk een eigen execute() methode die nauwelijks verschilt. De vraag is; waar laat je de Business Rules (met betrekking tot toegang)? Stel er is een Role 'JuniorPurchaser' die goederen tot 10.000 euro per order mag inkopen. Ga je zulk soort gevallen allemaal hardcoded in programmeren? Wat nou als er meerdere Purchasers komen, als de bedragen veranderen etc? Hoe houd je de flexibiliteit, zonder een hele applicatie te moeten doorlopen bij aanpassingen. Hebben jullie hier mee te maken gehad? Wat zijn jullie bevindingen? Google bevragen met RBAC + Business Rules, levert geen bevredigende resultaten.
Wanneer een actie aangeroepen wordt, zal voordat de execute() methode aangeroepen wordt eerst gecontroleert moeten worden of de User bepaalde rechten heeft;
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| class PageEditAction extends Action { function getCredentials() { $context = &$this->getContext(); $user = &$this->getUser(); return $user->getCredential('PageEdit'); } function execute() {} function validate(&$validatorManager) {} function handleError() {} function getDefaultView() {} function getRequestMethod() {} } |
Allemaal leuk en aardig, en dit valt allemaal prima te behappen. Wat nou, als je een gebruiker in een bepaalde Role alleen zijn eigen pagina's wil laten bewerken. Je wil daarvoor niet twee Actions maken met elk een eigen execute() methode die nauwelijks verschilt. De vraag is; waar laat je de Business Rules (met betrekking tot toegang)? Stel er is een Role 'JuniorPurchaser' die goederen tot 10.000 euro per order mag inkopen. Ga je zulk soort gevallen allemaal hardcoded in programmeren? Wat nou als er meerdere Purchasers komen, als de bedragen veranderen etc? Hoe houd je de flexibiliteit, zonder een hele applicatie te moeten doorlopen bij aanpassingen. Hebben jullie hier mee te maken gehad? Wat zijn jullie bevindingen? Google bevragen met RBAC + Business Rules, levert geen bevredigende resultaten.