feat: CRUD categories P3 (rendu serveur, garde + CSRF + validation) #15

Merged
Corentin merged 1 commit from feat/p3-categories-crud into dev 2026-06-15 21:45:31 +02:00
Owner

CRUD Categories (P3) : premier CRUD rendu serveur, etablit le pattern.

  • CategoryController (index/create/store/edit/update/toggle) sur AdminController : garde
    category.manage (RG-T03), CSRF sur mutations (RG-T01), validation serveur (RG-T18 : libelle/slug
    requis + format + bornes + unicite ; display_order 0..65535), allowlist de colonnes (RG-T16).
  • Pas de suppression dure (FK RESTRICT) -> bascule is_active. Violation d'unicite concurrente -> 422.
  • CategoryRepository : couche d'acces introduite pour les entites CRUD (testable via DatabaseInterface).
  • Vues admin/categories/{index,form} + not_found ; flash apres redirection ; sorties echappees.

Qualite : 144 tests (unit + integration DB auto-skippee, dont CRUD reel du repository), PHPStan L6 vert,
E2E (liste -> creation CSRF -> flash + categorie en base). Revue adversariale passee, 6 findings corriges
(borne display_order, violation unique -> 422, et 4 tests de regression : nom dupliqué, depassement, toggle
inverse, not-found update/toggle).

Base volontaire : dev.

CRUD Categories (P3) : premier CRUD rendu serveur, etablit le pattern. - CategoryController (index/create/store/edit/update/toggle) sur AdminController : garde category.manage (RG-T03), CSRF sur mutations (RG-T01), validation serveur (RG-T18 : libelle/slug requis + format + bornes + unicite ; display_order 0..65535), allowlist de colonnes (RG-T16). - Pas de suppression dure (FK RESTRICT) -> bascule is_active. Violation d'unicite concurrente -> 422. - CategoryRepository : couche d'acces introduite pour les entites CRUD (testable via DatabaseInterface). - Vues admin/categories/{index,form} + not_found ; flash apres redirection ; sorties echappees. Qualite : 144 tests (unit + integration DB auto-skippee, dont CRUD reel du repository), PHPStan L6 vert, E2E (liste -> creation CSRF -> flash + categorie en base). Revue adversariale passee, 6 findings corriges (borne display_order, violation unique -> 422, et 4 tests de regression : nom dupliqué, depassement, toggle inverse, not-found update/toggle). Base volontaire : dev.
Corentin added 1 commit 2026-06-15 21:42:34 +02:00
feat(admin): CRUD categories (P3, premier CRUD rendu serveur)
Some checks failed
CI / secret-scan (push) Successful in 8s
CI / php-lint (push) Successful in 17s
CI / static-tests (push) Successful in 30s
CI / secret-scan (pull_request) Successful in 7s
CI / php-lint (pull_request) Successful in 18s
CI / static-tests (pull_request) Successful in 32s
CI / auto-merge (pull_request) Failing after 4s
CI / auto-merge (push) Has been skipped
fe2547b77f
CategoryController (index/create/store/edit/update/toggle) sur AdminController : chaque action
gardee par category.manage (RG-T03), mutations validees CSRF (RG-T01) + serveur (RG-T18 : libelle/slug
requis, format, bornes, unicite ; ordre 0..65535), allowlist de colonnes (RG-T16). Pas de suppression
dure (FK RESTRICT) : bascule is_active. Violation de contrainte d'unicite (concurrence) traduite en 422,
pas en 500. Messages flash apres redirection. CategoryRepository : couche d'acces introduite pour les
entites CRUD. Vues admin/categories/{index,form} + not_found, sorties echappees. 144 tests (unit +
integration DB), PHPStan L6. Etablit le pattern reutilise par produits/menus/users.
Corentin added the
auto-merge
label 2026-06-15 21:42:35 +02:00
Corentin merged commit 8290ceabc4 into dev 2026-06-15 21:45:31 +02:00
Corentin deleted branch feat/p3-categories-crud 2026-06-15 21:45:32 +02:00
Sign in to join this conversation.
No reviewers
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: AcadeNice/corentin_wakdo#15
No description provided.