Files
_Assistant_Lead_Tech/knowledge/backend/patterns/general.md
MaksTinyWorkshop 7767f1f947 capitalisation: intégration 28 entrées knowledge + 2 CLAUDE.md RL799_V2 (triage branche mcp_v1)
28 nouvelles sections intégrées dans 12 fichiers knowledge (backend risques/patterns,
frontend risques/patterns, workflow risques). Couvre rate limiting, RGPD, CSP Next.js,
refresh token TOCTOU, catch-all Prisma, distinction 401/403, tests E2E Playwright, etc.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 20:11:02 +02:00

2.8 KiB

title: Backend — Patterns : Général domain: backend bucket: patterns tags: [auth, helpers, architecture, rbac] applies_to: [implementation, review, architecture] severity: medium validated_on: 2026-04-07 source_projects: [RL799_V2]

Backend — Patterns : Général

Extrait de la base de connaissance Lead_tech. Voir knowledge/backend/patterns/README.md pour l'index complet.


Pattern : Helper d'authentification centralisé enrichissable

  • Objectif : éviter la duplication de logique RBAC dans chaque service en centralisant un seul requireRoleAccess dans lib/authHelpers.ts.
  • Contexte : chaque nouveau service réimplémentait requireRoleAccess localement avec des variations subtiles (certains retournaient { email }, d'autres { email, role }).
  • Quand l'utiliser : dès qu'un endpoint nécessite une vérification de rôle ou d'authentification.
  • Validé le : 07-04-2026
  • Contexte technique : backend / RBAC — RL799_V2 epics 7-8-9

Règle

  • Un seul requireRoleAccess dans lib/authHelpers.ts, retournant toutes les infos du token utiles (email, role, sub).
  • Quand un service a besoin d'une info supplémentaire : enrichir le helper centralisé, pas le copier.
  • Le retour riche est rétrocompatible : les consommateurs existants utilisent ce dont ils ont besoin via destructuring.

Signal review

  • Tout service qui importe verifyToken directement ET fait son propre check RBAC est suspect de duplication.

Pattern : Extension d'un service existant par type avec RBAC granulaire

  • Objectif : éviter la duplication de service quand un nouveau besoin est fonctionnellement identique à un service existant mais avec des restrictions d'accès différentes.
  • Contexte : ajout d'un nouveau type de communication (ex: vm) avec restrictions RBAC spécifiques dans un service communications existant.
  • Quand l'utiliser : quand le nouveau besoin utilise le même modèle de données et le même CRUD que le service existant, seules les restrictions d'accès changent.
  • Quand l'éviter : quand le modèle de données diverge (champs spécifiques au nouveau type) — dans ce cas, un service dédié est préférable.
  • Validé le : 08-04-2026
  • Contexte technique : backend / architecture — RL799_V2 story 18-7

Règle

Préférer étendre le service avec un nouveau type (enum/Set) et ajuster les restrictions RBAC par type, plutôt que dupliquer le service.

Avantages

  • Un seul repository, un seul endpoint, même format de réponse
  • Tests existants couvrent la non-régression
  • Moins de code à maintenir

Signal review

  • Nouveau service qui réplique le CRUD d'un service existant avec un filtre additionnel → candidat à la fusion par type