Module 0 — Préambule¶
Épisode 0.1 — Présentation de la mini-série & objectifs¶
Objectif : poser le pourquoi / le but : une Django App réutilisable qui gère toutes les fonctionnalités headless d’allauth.
Sous-sujets : organisation du repo, branches, CI minimale (tests unitaires), conventions de nommage.
Démo : création du repo
django-auth-kit, structure de base (apps:accounts,headless_adapter,tests,docs).Livrable : repo initial +
README.mdavec objectifs et roadmap.
Épisode 0.2 — Tour rapide de django-allauth headless (concepts clés)¶
Objectif : expliquer ce que “headless” apporte (API, token strategies, adapters, OpenAPI).
Sous-sujets : session tokens vs JWT, adapter pattern, spec OpenAPI. (docs.allauth.org)
Démo : lire l’OpenAPI fourni par allauth et l’afficher (ex : navigateur ou swagger).
Livrable : notes de design : choix par défaut pour ton app (ex : session tokens + option JWT).
Module 1 — Configuration & Setup¶
Épisode 1.1 — Installation et settings minimal¶
Objectif : installer
django-allauthet préparerINSTALLED_APPS,AUTHENTICATION_BACKENDS, middlewares, CORS.Sous-sujets :
allauth.headlessactivation, CORS pour SPAs, paramètres de token strategy.Démo : pip install, settings.py minimal +
urls.pyqui expose les endpoints headless.Livrable :
settings.example.py,docker-composesimple (Postgres + Django).
Épisode 1.2 — Adapter headless par défaut (DefaultHeadlessAdapter)¶
Objectif : comprendre et surcharger l’adapter pour sérialisation des users et redirections front.
Sous-sujets :
serialize_user,get_frontend_url, user dataclass custom.Démo : implémenter
DefaultHeadlessAdapterpersonnalisé qui renvoie le payload exact dont ton frontend a besoin.Livrable :
headless_adapter/adapter.py
Module 2 — Flows d’authentification (cœur)¶
Ce module devient le cœur de ta série : chaque flow est une vidéo ou deux selon la complexité.
Épisode 2.1 — Auth : Current Session & Basic Login/Logout¶
Objectif : endpoints pour récupérer la session courante, login, logout.
Sous-sujets : headers requis (
X-Session-Tokenou cookie), comportement lors d’une SPA.Démo : flow login via headless API + test via curl / Postman.
Livrable : tests d’intégration pour login/logout.
Épisode 2.2 — Auth : Account (inscription & validation email)¶
Objectif : signup headless, email verification flow (code / lien).
Sous-sujets : stratégies d’email (one-time code vs lien), gestion des états (pending → verified).
Démo : signup + réception du token d’activation (simulé via console/email backend).
Livrable : endpoint signup + tests d’email.
Épisode 2.3 — Auth : Password Reset¶
Objectif : tout le flow reset (request → token → reset).
Sous-sujets : sécurité des tokens, invalidation après usage.
Démo : request reset, validate token, modifier mot de passe depuis API.
Livrable : endpoints testés + docs OpenAPI mis à jour.
Épisode 2.5 — Auth : 2FA (allauth.mfa et TOTP)¶
Objectif : activer et gérer 2FA (TOTP, backup codes).
Sous-sujets : onboarding 2FA, QR code, validation, désactivation.
Démo : activation 2FA, login qui demande code, génération et usage de backup codes.
Livrable : endpoints 2FA + tests de sécurité. (allauth.org)
Épisode 2.6 — Auth : Login By Code (email magic links / codes)¶
Objectif : implémenter le “login by code” (email code / magic link).
Sous-sujets : expiration, single-use, ré-envoi.
Démo : request code → validation → session créée.
Livrable : endpoint login-by-code + tests.
Épisode 2.7 — Auth : WebAuthn (Passkeys) — Signup & Login¶
Objectif : intégrer WebAuthn pour inscription et login (passkeys / hardware keys).
Sous-sujets : registration challenge, attestation, assertion, fallback vers password.
Démo : en local via navigateur compatible (ou émulateur), enregistrement d’un credential, login via passkey.
Livrable :
webauthnendpoints et guide d’intégration (note : allauth & écosystème ont des évolutions sur WebAuthn — garder un œil sur la compatibilité). (django-allauth-webauthn.readthedocs.io)
Module 3 — Gestion du compte (Account)¶
Épisode 3.1 — Account: Email (changer, confirmer, primary/secondary)¶
Objectif : endpoints pour ajouter/supprimer/confirm email, définir email principal.
Sous-sujets : vérification, mitigation account enumeration, bonne UX headless.
Démo : changer email et re-vérifier.
Épisode 3.2 — Account: Password (changer / policy)¶
Objectif : changement de mot de passe en front via API, politique (min length, checks).
Livrable : endpoint
change_password+ tests.
Épisode 3.3 — Account: Phone (si tu veux SMS)¶
Objectif : flow d’ajout et validation de téléphone (OTP).
Sous-sujets : intégration Twilio/alt., opt-in, tolérance brute-force.
Livrable : adapter SMS mock + guide pour intégrer un provider.
Épisode 3.4 — Account: Providers & 2FA management UI (headless)¶
Objectif : lister providers liés, dissocier, gestion 2FA par compte.
Livrable : endpoints d’administration de compte.
Épisode 3.5 — Account: WebAuthn management (lister / révoquer)¶
Objectif : UI/API pour voir / supprimer credentials enregistrés.
Module 4 — Sessions & Tokens¶
Épisode 4.1 — Sessions : lister / déconnecter / “trust this browser”¶
Objectif : exposer sessions actives, possibilité de kill session, “trust this device”.
Sous-sujets : durée, rafraîchissement, invalidation.
Livrable : endpoints sessions + tests.
Épisode 4.2 — Tokens : stratégies et sécurité (session tokens vs JWT)¶
Objectif : exposer les stratégies de tokens disponibles et implémenter la stratégie choisie.
Sous-sujets : renouvellement, blacklist, payload minimal, rotation.
Démo : implémenter session token par défaut, et option JWT plug-in.
Livrable :
token_strategymodule + docs. (docs.allauth.org)
Module 5 — Responses, API & OpenAPI¶
Épisode 5.1 — Standardiser les réponses & erreurs¶
Objectif : format uniforme JSON (success / error / code / details).
Sous-sujets : codes HTTP, erreurs métiers (409 conflict pour flows non-attendus — voir release notes).
Démo : global
ExceptionHandler, mapping erreurs allauth → API codes. (docs.allauth.org)Livrable : middleware d’erreurs + tests.
Épisode 5.2 — OpenAPI & documentation auto (swagger/redoc)¶
Objectif : exposer le spec OpenAPI, intégrer avec Django Rest Framework / Django-Ninja si besoin.
Sous-sujets : génération automatique, versions, distribution (statique vs dynamique).
Démo : exposer /docs (Swagger UI) avec spec allauth headless incluse.
Livrable :
/openapi/exposée +docs/usage.md.
Module 6 — Sécurité & bonnes pratiques¶
Épisode 6.1 — Security considerations (CSP, CORS, rate limit, account enumeration)¶
Objectif : lister et implémenter protections essentielles.
Sous-sujets : rate limit endpoints sensibles, éviter account enumeration, CSRF considerations pour SPA, cookie flags.
Démo : config simple de rate limit (ex :
django-ratelimit) + tests de fuzzing.
Épisode 6.2 — Tests & Audit¶
Objectif : tests unitaires + tests d’intégration pour tous les flows : signup, login, social, 2FA, webauthn.
Sous-sujets : fixtures, mocking providers, CI.
Livrable : pipeline CI (GitHub Actions) qui lance les tests.
Module 7 — Packaging, Réutilisation & Déploiement¶
Épisode 7.1 — Transformer en app réutilisable (pip installable)¶
Objectif : packaging,
setup.cfg,pyproject.toml, inclusion du spec OpenAPI.Sous-sujets : settings par défaut, docs d’intégration, exemples d’override.
Livrable : artefact installable (wheel) + guide d’intégration rapide.
Épisode 7.2 — Démo finale : intégration dans un projet réel (Django + Vue3)¶
Objectif : brancher l’app dans une vraie SPA (ex : VueJS) et montrer le login, 2FA, webauthn.
Livrable : repo example
example-projectavec frontend minimal.
Checklist technique (à suivre tout au long)¶
[ ]
adapterheadless personnalisé (headless_adapter/)[ ]
token_strategymodule (session par défaut, JWT optionnel)[ ] Endpoints documentés en OpenAPI (exposé via
/openapi/)[ ] Tests unitaires & d’intégration couvrant tous les flows
[ ] CI (tests + lint)
[ ] Docs d’intégration (README, HOWTO pour providers)
[ ] Exemple frontend (Vue) consommant l’API
[ ] Guide sécurité (CORS, CSP, rate limiting, account enumeration)
[ ] Gestion des emails (backends dev / prod) et modèle de templates d’email
Remarques pratiques & risques connus¶
Le mode headless expose des nuances autour des sessions et du state (par ex. perte de session possible dans certains flows provider → regarder
allauth.headlessinternals si tu rencontres un comportement étrange). (Stack Overflow)WebAuthn / Passkeys évoluent rapidement : prévoir des vidéos/commits de mise à jour et un fichier
COMPATIBILITY.md. (Django Forum)La doc headless contient une base solide et des exemples d’adapter/token strategies — l’utiliser comme référence principale. (docs.allauth.org)
Si tu veux, je peux maintenant :
Générer le README / roadmap prête à coller dans ton repo (avec la liste d’épisodes et checklist).
Écrire le script complet de la première vidéo (intro + demo terminal + commands + code snippets).
Te fournir la structure initiale de repo (arborescence + fichiers initiaux) sous forme d’un
tree+ fichierspyproject.toml/settings.example.py.
Dis-moi lequel des trois tu veux tout de suite et je te le fournis (prêt à copier).