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.
AuthModule UsersModule RolesModule PermissionsModule
En tant que visiteur
Je souhaite créer un compte
Afin de pouvoir utiliser la plateforme.
POST /auth/register
export class RegisterDto {
email: string;
password: string;
firstName: string;
lastName: string;
}
En tant qu'utilisateur
Je souhaite me connecter
Afin d'accéder à mon espace.
POST /auth/login
{
"accessToken": "...",
"refreshToken": "...",
"expiresIn": 3600
}
POST /auth/refresh
POST /auth/logout
GET /users/me
{
"id": "uuid",
"email": "user@test.com",
"profile": {
"firstName": "John",
"lastName": "Doe"
}
}
PUT /users/me
SUPER_ADMIN ADMIN_AGENCE GESTIONNAIRE COMMERCIAL PROPRIETAIRE CLIENT
roles permissions user_roles role_permissions
@Roles('ADMIN_AGENCE')
@Get()
findAll() {}
src/modules/auth ├── controllers │ ├── services │ ├── guards │ ├── strategies │ ├── dto │ ├── entities │ └── tests
AuthController UserController
AuthService TokenService PasswordService UserService
JwtAuthGuard RolesGuard PermissionsGuard
JwtStrategy RefreshTokenStrategy
model User {
id String @id @default(uuid())
email String @unique
passwordHash String
status UserStatus
profile UserProfile?
roles UserRole[]
}
model UserProfile {
id String @id @default(uuid())
userId String @unique
firstName String
lastName String
phone String?
}
model Role {
id String @id @default(uuid())
code String @unique
name String
}
Durée : 1 heure
Durée : 30 jours
bcrypt 12 rounds
Authorization: Bearer <token>
Auth Users Roles
POST /auth/register POST /auth/login POST /auth/refresh POST /auth/logout GET /users/me PUT /users/me
/login /register /forgot-password /profile
RegisterForm LoginForm ProfileForm
useLogin() useRegister() useProfile() useRefreshToken()
AuthService UserService TokenService
Register Flow Login Flow Refresh Flow
Register ↓ Login ↓ Access Protected Route ↓ Logout
Le Sprint 1 est terminé lorsque :
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.
Objectifs :
Ce sprint finalise le domaine Utilisateurs avant de commencer le domaine principal :
Catalogue Immobilier