Aller au contenu
Backend

API d’authentification NestJS

Inscription, vérification, connexion, rafraîchissement avec rotation et détection de réutilisation, mots de passe et rôles, sur NestJS, Prisma et MySQL.

10 $Version 1.0.0

Comment acheter : écrivez-moi sur WhatsApp, payez par OMT ou Whish, et je vous envoie le dépôt sous un jour ouvré.

NestJSPrismaMySQLZod

Captures d’écran

  • La référence de l’API du template API d’authentification NestJS sur un écran d’ordinateur, en mode clair
  • La référence de l’API du template API d’authentification NestJS sur un téléphone
  • La référence de l’API du template API d’authentification NestJS sur un écran d’ordinateur, en mode sombre

La référence est générée depuis le code même du template, et la démonstration vidéo est un enregistrement du template en marche.

Démonstration vidéo

Le parcours d’authentification, requête par requête, enregistré sur le template en marche : chaque réponse est celle de l’API. La vidéo est muette ; ses étapes sont listées à côté.

Ce que montre la vidéo

  1. Inscription : le compte est créé et un lien de vérification est envoyé.
  2. Connexion avant vérification : refusée, email_not_verified.
  3. L’e-mail de vérification, affiché dans le terminal en développement.
  4. Vérification de l’adresse avec le jeton du lien.
  5. Connexion : un access token et un refresh token.
  6. Appel d’une route protégée avec l’access token.
  7. Rafraîchissement : une nouvelle paire, et l’ancien refresh token est consommé.
  8. Réutilisation de l’ancien refresh token : refresh_token_reused, et toute la session prend fin.
  9. Le dernier access token cesse aussi de fonctionner : session_revoked.
  10. Mots de passe devinés : au-delà de la limite, 429 rate_limited.

Ce qu'il y a dedans

  • src/auth — inscription, vérification de l’adresse, connexion et déconnexion, rotation des refresh tokens avec détection de réutilisation, réinitialisation du mot de passe
  • src/users — votre compte, le changement de mot de passe et vos sessions ; des routes d’administration pour les comptes et les rôles
  • Des access tokens qui cessent de fonctionner dès que leur session prend fin, pas à leur expiration
  • Limites de débit, validation Zod et une seule forme d’erreur avec des codes lisibles par programme
  • openapi.json généré depuis le code, Swagger UI sur /docs et une référence d’API statique
  • prisma/schema.prisma et sa migration, des données de départ et un MySQL en Docker Compose
  • Des tests unitaires, et des tests de bout en bout sur une vraie base MySQL en CI

Ce que contient le zip

  • .github/workflows/ci.yml
  • docker/mysql-init/
  • prisma/schema.prisma
  • prisma/migrations/
  • screenshots/
  • scripts/build-docs.mjs
  • src/auth/
  • src/users/
  • src/common/
  • src/openapi/
  • src/mail/
  • test/
  • .env.example
  • compose.yaml
  • openapi.json
  • CHANGELOG.md
  • LICENSE.md
  • README.md
  • package.json

Ce qu’il vous faut

  • Node.js 22.12 ou plus récent, et npm
  • MySQL 8 (un fichier Docker Compose le démarre)
  • Un serveur SMTP, pour envoyer de vrais e-mails

Licence

Un développeur, projets illimités, les vôtres comme ceux de vos clients. Vous pouvez le livrer dans les projets que vous réalisez ; vous ne pouvez ni revendre ni partager le template lui-même, ni en faire un produit de templates. Mises à jour pendant douze mois.

Les conditions complètes sont dans LICENSE.md, livré avec le template. Demandez-m’en une copie avant d’acheter.

Les questions qu'on me pose

Que puis-je faire avec un template ?

Un développeur peut l’utiliser dans autant de projets qu’il le souhaite, les siens comme ceux de ses clients. Vous ne pouvez ni revendre ni partager le template lui-même, modifié ou non, ni en faire votre propre produit de templates.

Les mises à jour sont-elles incluses ?

Oui, pendant douze mois à partir de l’achat. Quand une nouvelle version sort, je vous l’envoie.

Y a-t-il une assistance ?

Sur WhatsApp ou par e-mail, avec votre clé de licence, et je réponds sous un jour ouvré. L’assistance couvre le bon fonctionnement du template tel qu’il est décrit. Elle ne couvre pas le développement de vos fonctionnalités.