022add9acc
feat(rbac): R2.2 frontend pages settings RBAC dynamique avec PermissionMatrix
...
- Pages /settings/roles (liste + filtres + create), /settings/roles/:id (matrix
permissions + danger zone), /settings/users/:userId/roles (multi-select +
preview union)
- PermissionMatrix : groupes Mantine cards, wildcard <group>:* qui grise les
individuals, admin:* qui court-circuite tout, indeterminate states, tooltips
avec descriptions du catalogue
- React Query hooks pour CRUD roles + assignations user-roles, notifications
Mantine sur succes / erreurs avec extraction du message backend
- Hook useAcadenicePermissions : best-effort lecture du claim JWT R2.1, fallback
sur role natif Docmost (defense en profondeur — backend reste source de verite)
- i18n complet FR + EN (~80 cles)
- Vitest + Testing Library introduits dans apps/client (devDeps + config + setup)
- 22 tests couvrant matrix wildcards, list filters, detail save/delete flow,
multi-select assignments
- Patches upstream minimaux : 3 routes ajoutees au router, 1 entree sidebar
(visible si canManageRoles)
- Documente comme Patch 004 dans ACADENICE_PATCHES.md
2026-05-07 22:42:39 +02:00
07d0b66fda
feat(auth): Bloc 4b — OIDC client Authentik via openid-client (active par OIDC_ENABLED env)
...
Ajoute un flow d'authentification OIDC via Authentik (ou tout IdP conforme),
desactive par defaut. Le code est dormant tant que OIDC_ENABLED=true n'est
pas pose.
Server :
- apps/server/src/core/auth/oidc/oidc.module.ts (nouveau)
- apps/server/src/core/auth/oidc/oidc.service.ts (discovery + PKCE + callback + JIT provisioning)
- apps/server/src/core/auth/oidc/oidc.controller.ts (routes /api/auth/oidc/{login,callback,status})
- apps/server/src/core/auth/oidc/oidc.service.spec.ts (8 tests Jest, openid-client mocke)
- apps/server/src/integrations/environment/environment.service.ts : +9 getters OIDC
- apps/server/src/core/core.module.ts : +OidcModule dans imports
Client :
- apps/client/src/features/auth/queries/oidc-query.ts (hook useOidcStatus)
- apps/client/src/features/auth/components/oidc-login-button.tsx (bouton conditionnel)
- apps/client/src/features/auth/components/login-form.tsx : +OidcLoginButton
Securite :
- PKCE S256 obligatoire
- State CSRF en cookie httpOnly signe (5 min)
- Verification JWKS auto via openid-client v6
- Refetch userInfo apres echange du code
- JIT provisioning strict par defaut (OIDC_AUTO_PROVISION=false)
Lib : openid-client v6.8.2 (deja en deps), import lazy.
Documente dans ACADENICE_PATCHES.md (Patch 002) et .env.example.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 21:26:53 +02:00
efa26440a0
feat(rebrand): DocAdenice — patch initial sur le fork Acadenice
...
- Renomme app name visible 'Docmost' -> 'DocAdenice' (browser title, header, emails)
- Conserve identifiants techniques (package name, classes, imports, service docker)
- Ajoute ACADENICE_PATCHES.md avec changelog des patches Acadenice
2026-05-07 21:10:51 +02:00