Skip to content

Architectuur: Permission magic strings vervangen door enum #139

Description

@ginkelsoft-development

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

  • Enum BuildoraAbility toegevoegd
  • Alle gebruik in src/ overgeschakeld (geen losse 'view' etc. meer)
  • Generate/Sync permission commands gebruiken de enum als enige bron
  • Backwards compat: bestaande permission-strings in DB blijven werken (waarden zijn identiek)
  • Regression test: permission check werkt nog steeds

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions