Probleem
Strings als 'view', 'create', 'update', 'delete', 'export' zitten hardcoded in permission checks verspreid over minimaal 6 bestanden in src/Http/Controllers/, src/Http/Middleware/ en src/Resources/.
Impact: een typo ('updaet') breekt permission enforcement stil — geen compile-time check, geen IDE-completion. Hoog risico op subtiele security bugs.
Voorstel
Introduceer een BuildoraAbility enum:
enum BuildoraAbility: string
{
case View = 'view';
case Create = 'create';
case Update = 'update';
case Delete = 'delete';
case Export = 'export';
case Restore = 'restore';
case ForceDelete = 'force-delete';
public function permissionString(string \$resource): string
{
return \"{\$resource}.{\$this->value}\";
}
}
Vervang alle hardcoded strings door BuildoraAbility::View.
Acceptatiecriteria
Probleem
Strings als
'view','create','update','delete','export'zitten hardcoded in permission checks verspreid over minimaal 6 bestanden insrc/Http/Controllers/,src/Http/Middleware/ensrc/Resources/.Impact: een typo (
'updaet') breekt permission enforcement stil — geen compile-time check, geen IDE-completion. Hoog risico op subtiele security bugs.Voorstel
Introduceer een
BuildoraAbilityenum:Vervang alle hardcoded strings door
BuildoraAbility::View.Acceptatiecriteria
BuildoraAbilitytoegevoegdsrc/overgeschakeld (geen losse'view'etc. meer)