feat(commercial) : enforce RG-1.04 completeness for commerciale role
- RG-1.04 durcie : pour une Commerciale, la completude de l'onglet Information est
exigee sur POST et sur tout PATCH, independamment des champs envoyes (suppression
de la condition d'intersection dans validateInformationCompleteness).
- Onglet Comptabilite editable par Compta : security du Patch /clients/{id} elargie
a `manage` OU `accounting.manage` ; nouveau guardManage (ClientProcessor, mode
strict RG-1.28) qui refuse a un porteur non-`manage` de modifier les onglets
principal / Information -> 403. Compta reste donc cantonne a la Comptabilite.
- Spec § 7 RG-1.04 amendee (+ consequence POST 422) + docblock du validator.
- Tests unitaires ClientProcessor : guardManage (Compta accounting-only -> 200,
champ metier -> 403) + RG-1.04 durcie hors onglet Information.
This commit is contained in:
+8
-10
@@ -10,17 +10,15 @@ use Symfony\Component\Validator\ConstraintViolation;
|
||||
use Symfony\Component\Validator\ConstraintViolationList;
|
||||
|
||||
/**
|
||||
* Validator metier RG-1.04 : pour un utilisateur portant le role metier
|
||||
* Commerciale, TOUS les champs de l'onglet Information deviennent obligatoires
|
||||
* lors d'un PATCH touchant le groupe `client:write:information`.
|
||||
* Validator metier RG-1.04 (durcie ERP-74) : pour un utilisateur portant le
|
||||
* role metier Commerciale, TOUS les champs de l'onglet Information sont
|
||||
* obligatoires sur POST comme sur tout PATCH, independamment des champs
|
||||
* reellement envoyes.
|
||||
*
|
||||
* Invoque par le ClientProcessor UNIQUEMENT quand les deux conditions sont
|
||||
* reunies (role Commerciale + payload touchant l'onglet Information). Pour les
|
||||
* autres roles, ces champs restent optionnels — le validator n'est pas appele.
|
||||
*
|
||||
* Tant qu'aucun user ne porte le role `commerciale` (seede par ERP-74,
|
||||
* cf. App\Shared\Domain\Security\BusinessRoles::COMMERCIALE), cette regle reste
|
||||
* DORMANTE : aucun appelant ne la declenche.
|
||||
* Invoque par le ClientProcessor des que l'utilisateur courant porte le role
|
||||
* Commerciale (plus de condition d'intersection avec l'onglet Information).
|
||||
* Pour les autres roles, ces champs restent optionnels — le validator n'est
|
||||
* pas appele.
|
||||
*
|
||||
* Leve une ValidationException (HTTP 422) listant chaque champ manquant, par
|
||||
* coherence avec les violations Symfony rendues par API Platform.
|
||||
|
||||
Reference in New Issue
Block a user