Ce projet constitue la brique Backend de mon portfolio. Il s'agit d'une API d'authentification complète, sécurisée et architecturée selon les standards de l'industrie avec NestJS et Prisma.
- Sécurité "Cookie-First" : Utilisation de cookies HttpOnly pour stocker les JWT, neutralisant les risques de vols de tokens via failles XSS.
- Architecture Découplée : Séparation stricte entre la logique métier (
Services), l'accès aux données (Repositories) et la validation (DTOs). - Gestion de Base de Données : Intégration fluide avec PostgreSQL via l'ORM Prisma.
- Rigueur TypeScript : Typage fort et utilisation de classes pour la validation de données au runtime.
- Framework : NestJS
- ORM : Prisma
- Base de données : PostgreSQL
- Sécurité : JWT (Json Web Token), Bcrypt (Hashage), Cookie-parser
- Langage : TypeScript
Assurez-vous d'avoir Node.js et une instance PostgreSQL active.
git clone https://github.com/steevnPrm/AuthModule-PORTFOLIO.git
cd AuthModule-PORTFOLIO/api
npm installCréez un fichier .env à la racine du dossier api avec vos identifiants :
# Database
POSTGRES_USER="auth_admin"
POSTGRES_PASSWORD="supersecret123"
POSTGRES_DB="auth_database"
DATABASE_URL="postgresql://auth_admin:supersecret123@localhost:5432/auth_database?schema=public"
# Auth
JWT_SECRET="supersecret123"npx prisma generate
npx prisma db pushnpm run start:dev| Méthode | Route | Description | Protection |
|---|---|---|---|
POST |
/auth/register |
Inscription d'un utilisateur (Hashage Bcrypt) | Public |
POST |
/auth/login |
Connexion + Génération du Cookie HttpOnly | Public |
POST |
/auth/logout |
Suppression du cookie de session | Public |
GET |
/user/me |
Récupération du profil utilisateur | AuthGuard (JWT) |
Pour sa structure modulaire et son système d'injection de dépendances qui facilite la maintenance et l'évolution du code (passage à une architecture micro-services possible).
Le token n'est pas renvoyé dans le corps de la réponse JSON. Il est injecté directement dans les headers de réponse via un cookie Set-Cookie avec les flags httpOnly et secure (en production). Cela garantit qu'un script malveillant côté client ne peut pas intercepter la session.
L'accès à PostgreSQL est encapsulé dans une couche Repository. Cela permet de découpler la logique métier de l'outil technique (Prisma), facilitant ainsi les futurs tests unitaires ou un changement d'ORM.
Steevn - en recherche d'alternance Concepteur Développeur d'Applications (CDA).