feat(commercial) : RBAC fournisseurs (permissions + 3 sources + seed par rôle + sécurité référentiels) (ERP-90)

- 5 permissions commercial.suppliers.* (view/manage/accounting.view/accounting.manage/archive) dans CommercialModule::permissions()
- 3 sources RBAC synchronisées (règle n°8) : sidebar.php (/suppliers + suppliers.view), personas.ts (user-full), SeedE2ECommand.php (miroir back)
- Assignation par rôle dans RbacSeeder::MATRIX (§ 2.9, idempotent) : Bureau view+manage, Compta view+accounting.view+accounting.manage, Commerciale view+manage, Usine aucune, archive Admin seul
- Sécurité des référentiels (tva_modes/payment_delays/payment_types/banks) élargie : view client OR view fournisseur
This commit is contained in:
Matthieu
2026-06-05 14:21:19 +02:00
parent b580bb6576
commit 48d1904d03
9 changed files with 56 additions and 19 deletions
@@ -25,7 +25,7 @@ use Symfony\Component\Serializer\Attribute\Groups;
#[ApiResource(
operations: [
new GetCollection(
security: "is_granted('commercial.clients.view')",
security: "is_granted('commercial.clients.view') or is_granted('commercial.suppliers.view')",
normalizationContext: ['groups' => ['payment_delay:read']],
// Tri par defaut spec M1 § 4.7 : position ASC puis label ASC.
order: ['position' => 'ASC', 'label' => 'ASC'],
@@ -33,11 +33,11 @@ use Symfony\Component\Serializer\Attribute\Groups;
paginationClientEnabled: true,
),
new Get(
security: "is_granted('commercial.clients.view')",
security: "is_granted('commercial.clients.view') or is_granted('commercial.suppliers.view')",
normalizationContext: ['groups' => ['payment_delay:read']],
),
],
security: "is_granted('commercial.clients.view')",
security: "is_granted('commercial.clients.view') or is_granted('commercial.suppliers.view')",
)]
#[ORM\Entity(repositoryClass: DoctrinePaymentDelayRepository::class)]
#[ORM\Table(name: 'payment_delay')]