Skip to content

steevnPrm/AuthModule-PORTFOLIO

Repository files navigation

🛡️ AuthModule-PORTFOLIO

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.

🚀 Points Forts du Projet

  • 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.

🛠️ Stack Technique

  • Framework : NestJS
  • ORM : Prisma
  • Base de données : PostgreSQL
  • Sécurité : JWT (Json Web Token), Bcrypt (Hashage), Cookie-parser
  • Langage : TypeScript

⚙️ Configuration & Installation

1. Prérequis

Assurez-vous d'avoir Node.js et une instance PostgreSQL active.

2. Installation

git clone https://github.com/steevnPrm/AuthModule-PORTFOLIO.git
cd AuthModule-PORTFOLIO/api
npm install

3. Variables d'environnement

Cré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"

4. Initialisation de la base de données

npx prisma generate
npx prisma db push

5. Lancement

npm run start:dev

📡 API Endpoints

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)

🔒 Choix Techniques & Sécurité

Pourquoi NestJS ?

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).

Gestion du JWT

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.

Repository Pattern

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.


👨‍💻 Auteur

Steevn - en recherche d'alternance Concepteur Développeur d'Applications (CDA).


About

Un module d'authentication prêt à l'emploi en nestJS avec database dockerisé

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors