feat(core) : RBAC Task 1 - entites Permission et Role + domaine securite

- Entite Permission avec methodes markOrphan/revive/updateMetadata
- Entite Role avec addPermission/removePermission/ensureDeletable
- Constantes SystemRoles (codes admin/user partages)
- Exception SystemRoleDeletionException pour la garde de suppression
- Tests unitaires couvrant le comportement domaine (pas de BDD)

Ticket #343 - 1/7 : fondations RBAC (domaine pur, sans persistence).
Les entites ne portent pas encore repositoryClass (ajoute en Task 2).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Matthieu
2026-04-14 16:30:15 +02:00
parent e3025bf2c9
commit f0ea9201f5
7 changed files with 459 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
<?php
declare(strict_types=1);
namespace App\Module\Core\Domain\Security;
/**
* Source de verite unique pour les codes des roles systeme RBAC.
*
* Ces constantes sont partagees entre les fixtures applicatives et les
* migrations Doctrine (qui inserent les memes codes en SQL brut). Toute
* modification ici doit etre repercutee dans la migration correspondante.
*/
final class SystemRoles
{
public const string ADMIN_CODE = 'admin';
public const string USER_CODE = 'user';
/**
* Empeche l'instanciation : cette classe est un simple porteur de constantes.
*/
private function __construct() {}
}