@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 +46 -13
- package/obsidiane-auth-client-js-0.1.0.tgz +0 -0
- package/package.json +1 -1
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":"
|
|
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
|
|
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
|
|
775
|
+
### Tests end-to-end (webfront)
|
|
740
776
|
|
|
741
|
-
|
|
777
|
+
Des tests Playwright sont disponibles dans `webfront/tests-e2e` :
|
|
742
778
|
|
|
743
779
|
```bash
|
|
744
|
-
|
|
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
|