Table des matières

Sprint 1 — Module Authentification

Objectif du Sprint

Mettre en place l'ensemble des fondations de sécurité de la plateforme.

À l'issue du Sprint 1 :

Ce sprint débloque l'ensemble des autres développements métiers.


Périmètre

Module Auth

AuthModule

UsersModule

RolesModule

PermissionsModule

User Stories

US-001 : Création de compte

En tant que visiteur

Je souhaite créer un compte

Afin de pouvoir utiliser la plateforme.


Critères d'acceptation


Endpoint

POST /auth/register

DTO

export class RegisterDto {
 
  email: string;
 
  password: string;
 
  firstName: string;
 
  lastName: string;
 
}

US-002 : Connexion

En tant qu'utilisateur

Je souhaite me connecter

Afin d'accéder à mon espace.


Critères d'acceptation


Endpoint

POST /auth/login

Réponse

{
  "accessToken": "...",
  "refreshToken": "...",
  "expiresIn": 3600
}

US-003 : Rafraîchissement du token

Endpoint

POST /auth/refresh

Critères


US-004 : Déconnexion

Endpoint

POST /auth/logout

Critères


US-005 : Consultation profil

Endpoint

GET /users/me

Réponse

{
  "id": "uuid",
  "email": "user@test.com",
  "profile": {
    "firstName": "John",
    "lastName": "Doe"
  }
}

US-006 : Modification profil

Endpoint

PUT /users/me

US-007 : Gestion des rôles

Rôles

SUPER_ADMIN

ADMIN_AGENCE

GESTIONNAIRE

COMMERCIAL

PROPRIETAIRE

CLIENT

Tables

roles

permissions

user_roles

role_permissions

US-008 : Contrôle d'accès RBAC

Exemple

@Roles('ADMIN_AGENCE')
 
@Get()
findAll() {}

Critères


Architecture Backend

Module Auth

src/modules/auth

├── controllers
│
├── services
│
├── guards
│
├── strategies
│
├── dto
│
├── entities
│
└── tests

Controllers

AuthController

UserController

Services

AuthService

TokenService

PasswordService

UserService

Guards

JwtAuthGuard

RolesGuard

PermissionsGuard

Strategies

JwtStrategy

RefreshTokenStrategy

Entités Prisma

User

model User {
 
  id             String @id @default(uuid())
 
  email          String @unique
 
  passwordHash   String
 
  status         UserStatus
 
  profile        UserProfile?
 
  roles          UserRole[]
 
}

UserProfile

model UserProfile {
 
  id          String @id @default(uuid())
 
  userId      String @unique
 
  firstName   String
 
  lastName    String
 
  phone       String?
 
}

Role

model Role {
 
  id          String @id @default(uuid())
 
  code        String @unique
 
  name        String
 
}

Sécurité

JWT

Durée :

1 heure

Refresh Token

Durée :

30 jours

Hash

bcrypt

12 rounds

Headers

Authorization:

Bearer <token>

Swagger

Tags

Auth

Users

Roles

Endpoints documentés

POST /auth/register

POST /auth/login

POST /auth/refresh

POST /auth/logout

GET /users/me

PUT /users/me

Frontend

Pages

/login

/register

/forgot-password

/profile

Forms

RegisterForm

LoginForm

ProfileForm

Hooks

useLogin()

useRegister()

useProfile()

useRefreshToken()

Tests

Unitaires

AuthService

UserService

TokenService

Intégration

Register Flow

Login Flow

Refresh Flow

E2E

Register

↓

Login

↓

Access Protected Route

↓

Logout

Définition de terminé

Le Sprint 1 est terminé lorsque :


Livrables


Démonstration Sprint

Scénario de validation :

1. Création compte

2. Connexion

3. Réception JWT

4. Consultation profil

5. Modification profil

6. Vérification rôle

7. Déconnexion

Tous les flux doivent être démontrables depuis Swagger et le Frontend.


Sprint suivant

Sprint 2 — Gestion Utilisateurs

Objectifs :

Ce sprint finalise le domaine Utilisateurs avant de commencer le domaine principal :

Sprint 3

Catalogue Immobilier

DokuWiki Appliance - Powered by TurnKey Linux