Directory : save contacts/adresses au clic, denormalizer interface & seed RBAC au déploiement #18

Merged
matthieu merged 3 commits from feat/directory-detail-save into develop 2026-06-23 14:25:33 +00:00
Owner

Contenu

Trois changements indépendants, regroupés dans cette branche issue de develop.

fix(api) — denormalizer de collections typées interface

  • Ajout de ContractRelationDenormalizer (module Shared) qui résout les IRIs pour les collections typées contre une interface (Contract), corrigeant les erreurs 400 en POST/PATCH.
  • Couvert par InterfaceCollectionDenormalizationTest.

fix(directory) — persistance des contacts/adresses au clic

  • Les blocs Contact/Adresse des fiches Client/Prospect ne s'enregistrent plus au blur : l'édition est tenue en mémoire et persistée via saveContacts/saveAddresses au clic « Enregistrer » (avec garde anti-double-soumission), comme les formulaires de tâche.
  • Suppression toujours immédiate. Léger restyle des blocs et boutons d'action.

fix(deploy) — seed des rôles système RBAC au déploiement

  • deploy.sh ne synchronisait que le catalogue de permissions ; les rôles système (admin, user) n'étaient jamais seedés → page admin Rôles vide après un déploiement neuf.
  • Ajout de app:seed-rbac (idempotent) au script de déploiement.
  • Mise à jour de doc/deployment-docker.md (script embarqué + section RBAC post-déploiement, avec le correctif manuel pour une prod déjà déployée) et note dans CLAUDE.md.

Vérifications

  • PHPUnit : 173 tests verts (pre-commit hook).
  • php-cs-fixer : propre.

Note post-déploiement

Sur une prod déjà en ligne avec la table Rôles vide, lancer une fois :

sudo docker compose exec -T -u www-data app php bin/console app:seed-rbac
sudo docker compose exec -T -u www-data app php bin/console app:sync-permissions
## Contenu Trois changements indépendants, regroupés dans cette branche issue de `develop`. ### `fix(api)` — denormalizer de collections typées interface - Ajout de `ContractRelationDenormalizer` (module `Shared`) qui résout les IRIs pour les collections typées contre une interface (`Contract`), corrigeant les erreurs 400 en POST/PATCH. - Couvert par `InterfaceCollectionDenormalizationTest`. ### `fix(directory)` — persistance des contacts/adresses au clic - Les blocs Contact/Adresse des fiches Client/Prospect ne s'enregistrent plus au blur : l'édition est tenue en mémoire et persistée via `saveContacts`/`saveAddresses` au clic « Enregistrer » (avec garde anti-double-soumission), comme les formulaires de tâche. - Suppression toujours immédiate. Léger restyle des blocs et boutons d'action. ### `fix(deploy)` — seed des rôles système RBAC au déploiement - `deploy.sh` ne synchronisait que le catalogue de permissions ; les rôles système (`admin`, `user`) n'étaient jamais seedés → page admin **Rôles** vide après un déploiement neuf. - Ajout de `app:seed-rbac` (idempotent) au script de déploiement. - Mise à jour de `doc/deployment-docker.md` (script embarqué + section RBAC post-déploiement, avec le correctif manuel pour une prod déjà déployée) et note dans `CLAUDE.md`. ## Vérifications - PHPUnit : 173 tests verts (pre-commit hook). - php-cs-fixer : propre. ## Note post-déploiement Sur une prod déjà en ligne avec la table Rôles vide, lancer une fois : ```bash sudo docker compose exec -T -u www-data app php bin/console app:seed-rbac sudo docker compose exec -T -u www-data app php bin/console app:sync-permissions ```
matthieu added 3 commits 2026-06-23 14:13:08 +00:00
Add ContractRelationDenormalizer to resolve IRIs for collections typed
against an interface (Contract), fixing POST/PATCH 400 errors. Cover it
with InterfaceCollectionDenormalizationTest.
Hold contact/address block edits in memory and persist them via explicit
saveContacts/saveAddresses on click (with saving guards), matching the task
forms. Keep immediate deletion. Minor restyle of blocks and action buttons.
fix(deploy) : seed RBAC system roles during deployment
Pull Request — Quality gate / Frontend (build) (pull_request) Successful in 1m8s
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m37s
8e00c5f5a8
deploy.sh only synced the permission catalog; the system roles (admin, user)
were never seeded, leaving the admin Roles page empty after a fresh deploy.
Add app:seed-rbac (idempotent) to the deploy script, refresh the embedded
script in deployment-docker.md, document the RBAC post-deploy step (with the
manual fix for an already-deployed prod), and note it in CLAUDE.md.
matthieu merged commit 961b7f56b4 into develop 2026-06-23 14:25:33 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MALIO-DEV/Lesstime#18