@obsidiane/auth-client-js 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -242,6 +242,7 @@ validation **Origin/Referer** (Same Origin).
242
242
  - [Architecture](#architecture)
243
243
  - [Démarrage rapide](#démarrage-rapide)
244
244
  - [API & flux principaux](#api--flux-principaux)
245
+ - [Codes d’erreur (API)](#codes-derreur-api)
245
246
  - [Intégration front (SPA)](#intégration-front-spa)
246
247
  - [Configuration & déploiement](#configuration--déploiement)
247
248
  - [SDKs](#sdks)
@@ -275,8 +276,9 @@ validation **Origin/Referer** (Same Origin).
275
276
  - **API JSON principale**
276
277
  - Auth : `POST /api/auth/login`, `GET /api/auth/me`, `POST /api/auth/refresh`, `POST /api/auth/logout`.
277
278
  - Inscription & mot de passe : `POST /api/auth/register`, `/api/auth/password/forgot`, `/api/auth/password/reset`.
278
- - Invitation : `POST /api/auth/invite`, `POST /api/auth/invite/complete`.
279
+ - Invitation : `POST /api/auth/invite`, `POST /api/auth/invite/complete`, `GET /api/auth/invite/preview?token=...`.
279
280
  - Setup : `POST /api/setup/admin`.
281
+ - Admin users : `PUT /api/users/{id}/roles`.
280
282
 
281
283
  - **Cookies & tokens**
282
284
  - `__Secure-at` : access token JWT (HttpOnly, prod).
@@ -387,7 +389,7 @@ make check-prod
387
389
  make test
388
390
  ```
389
391
 
390
- **Avant de push :** Lancez `make test` pour vérifier que tout passe (lint, build production, PHPStan).`
392
+ **Avant de push :** Lancez `make test` pour vérifier que tout passe (lint, build production, PHPStan).
391
393
 
392
394
  ### URLs utiles (dev)
393
395
 
@@ -414,7 +416,7 @@ curl -i \
414
416
  -c cookiejar.txt \
415
417
  -H 'Content-Type: application/json' \
416
418
  -H "Origin: http://localhost:8000" \
417
- -d '{"email":"userexample.com","password":"Secret123!"}' \
419
+ -d '{"email":"user@example.com","password":"Secret123!"}' \
418
420
  http://localhost:8000/api/auth/login
419
421
 
420
422
  # Profil courant
@@ -442,12 +444,46 @@ curl -i -b cookiejar.txt -H "Origin: http://localhost:8000" -X POST http://local
442
444
  | POST | `/api/auth/password/reset` | Réinitialisation via token |
443
445
  | GET | `/api/auth/verify-email` | Validation d’email via lien signé |
444
446
  | POST | `/api/auth/invite` | Inviter un utilisateur (admin) |
447
+ | GET | `/api/auth/invite/preview` | Prévisualiser une invitation |
445
448
  | POST | `/api/auth/invite/complete` | Compléter une invitation |
449
+ | PUT | `/api/users/{id}/roles` | Mettre à jour les roles (admin) |
446
450
 
447
451
  Les payloads détaillés, codes de réponse et schémas sont disponibles dans `http://<APP_BASE_URL>/api/docs` (OpenAPI).
448
452
 
449
453
  ---
450
454
 
455
+ ## Codes d’erreur (API)
456
+
457
+ L’API expose des erreurs HTTP standard. Selon le format (`Accept`), la réponse suit le schéma Problem Details/JSON
458
+ ou Hydra, mais les statuts restent identiques.
459
+
460
+ | HTTP | Cas principaux | Détails |
461
+ | ---: | --- | --- |
462
+ | 400 | Requête invalide, token invalide | `verify-email` (id manquant), reset/verify token invalide, invitation sans token (`details.token = INVALID_INVITATION`). |
463
+ | 401 | Non authentifié | `me`, JWT invalide/expiré, service token invalide, login refusé. |
464
+ | 403 | Accès refusé | Origin/Referer non autorisé, endpoints admin sans rôle. |
465
+ | 404 | Introuvable | Invitation inconnue, user introuvable, inscription désactivée. |
466
+ | 409 | Conflit | Email déjà utilisé, invitation déjà acceptée, bootstrap requis ou déjà fait. |
467
+ | 410 | Expiré | Invitation expirée, lien de vérification expiré, reset token expiré. |
468
+ | 422 | Validation | Email/mot de passe invalides, champs requis, `INVALID_ROLES`, confirmation mot de passe. |
469
+ | 423 | Verrouillé | Email non vérifié lors du login. |
470
+ | 429 | Rate limit | Login, register, invite, invite/complete, password/forgot/reset, setup/admin. |
471
+ | 500 | Erreur interne | Échec de reset password non géré (`ResetRequestFailedException`). |
472
+ | 503 | Service indisponible | Échec d’envoi d’email (`MailDispatchException`). |
473
+
474
+ Identifiants d’erreurs utiles dans les payloads/validations :
475
+ - `INVALID_INVITATION` (token manquant ou invalide lors du preview).
476
+ - `INVALID_ROLES` (payload de roles invalide).
477
+
478
+ ---
479
+
480
+ ## Invitation (règles métiers)
481
+
482
+ - Un utilisateur **déjà vérifié** ne peut pas être ré-invité.
483
+ - Un utilisateur **non vérifié** peut être ré-invité : l’email est renvoyé si l’invitation est encore valide, sinon elle est régénérée.
484
+
485
+ ---
486
+
451
487
  ## Origin/Referer
452
488
 
453
489
  Tous les endpoints sensibles (login, register, reset, logout, setup, invitation) valident l’**Origin/Referer** :
@@ -710,7 +746,7 @@ cd core && vendor/bin/phpstan analyse -c phpstan.neon.dist
710
746
 
711
747
  #### Frontend (Angular/TypeScript)
712
748
 
713
- - **Angular 19+** : Standalone components, signals, inject()
749
+ - **Angular 21** : Standalone components, signals, inject()
714
750
  - **TypeScript strict mode** : Tous les flags stricts activés
715
751
  - **ESLint** : Configuration custom avec règles Angular
716
752
  - **Prefer inject()** : Utiliser `inject()` au lieu de constructor injection
@@ -736,19 +772,15 @@ Le projet maintient une qualité de code stricte :
736
772
 
737
773
  ## Tests & SDKs
738
774
 
739
- ### Tests end-to-end – `tests/e2e.sh`
775
+ ### Tests end-to-end (webfront)
740
776
 
741
- Un script Bash est fourni pour tester rapidement les principaux parcours (setup initial, login/logout, inscription + vérification d’email, reset password, invitation) :
777
+ Des tests Playwright sont disponibles dans `webfront/tests-e2e` :
742
778
 
743
779
  ```bash
744
- ./tests/e2e.sh
780
+ cd webfront
781
+ npm run test:e2e
745
782
  ```
746
783
 
747
- - Le script est interactif : il te demande la base URL, les emails/mots de passe à utiliser pour l’admin, l’utilisateur d’inscription et l’utilisateur invité.
748
- - À chaque étape nécessitant une action sur l’email (clic sur `/verify-email?...`, `/reset-password/confirm?token=...`, `/invite/complete?...`), il affiche un message du type :
749
- - `Attente de confirmation d’email… Ouvrez Maildev/Notifuse et cliquez sur le lien`, puis attend `ENTER`.
750
- - Il envoie les en-têtes `Origin` nécessaires à la validation Same Origin.
751
-
752
784
  ### Client JS – `@obsidiane/auth-client-js`
753
785
 
754
786
  * Consomme l’API (login, me, refresh, logout, register, reset password) depuis navigateur ou Node/SSR.
@@ -763,7 +795,8 @@ Un script Bash est fourni pour tester rapidement les principaux parcours (setup
763
795
 
764
796
  ## Bridge Meridiane
765
797
 
766
- Un bridge Angular peut être généré depuis la spec OpenAPI (API Platform) via le Makefile racine :
798
+ Un bridge Angular peut être généré depuis la spec OpenAPI (API Platform) via le Makefile racine.
799
+ Le core doit être lancé avec `API_DOCS_ENABLED=1` (spec sur `http://localhost:8000/api/docs.json`).
767
800
 
768
801
  ```bash
769
802
  make bridge
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@obsidiane/auth-client-js",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.1.0",
6
6
  "@angular/core": "^20.1.0",