fix: manage quantity && update geoloca
This commit is contained in:
@@ -362,6 +362,7 @@ sequenceDiagram
|
||||
participant API as Backend API
|
||||
participant DB as PostgreSQL
|
||||
participant R as Redis
|
||||
participant TG as Telegram
|
||||
|
||||
rect rgb(200, 230, 200)
|
||||
Note over U,R: Registration
|
||||
@@ -374,15 +375,36 @@ sequenceDiagram
|
||||
end
|
||||
|
||||
rect rgb(200, 200, 230)
|
||||
Note over U,R: Login
|
||||
Note over U,TG: Login Standard (2FA desactivee)
|
||||
U->>F: Entrer credentials
|
||||
F->>API: POST /auth/login
|
||||
API->>DB: Verifier credentials
|
||||
DB-->>API: User valide
|
||||
API->>API: Generer JWT
|
||||
API->>R: Stocker session
|
||||
API-->>F: 200 OK + JWT Token
|
||||
F->>F: Stocker token (localStorage)
|
||||
API-->>F: 200 OK + { access_token, user }
|
||||
F->>F: Stocker token
|
||||
F-->>U: Connecte
|
||||
end
|
||||
|
||||
rect rgb(255, 240, 200)
|
||||
Note over U,TG: Login avec 2FA (Telegram active)
|
||||
U->>F: Entrer credentials
|
||||
F->>API: POST /auth/login
|
||||
API->>DB: Verifier credentials + verifier 2FA active
|
||||
DB-->>API: User valide, 2FA requise
|
||||
API->>R: Stocker session_token (TTL 5min)
|
||||
API->>TG: Envoyer code 6 chiffres via bot Telegram
|
||||
API-->>F: 200 OK + { requires_2fa: true, session_token }
|
||||
F-->>U: Afficher saisie du code Telegram
|
||||
U->>F: Entrer code recu sur Telegram
|
||||
F->>API: POST /auth/2fa/verify { session_token, code }
|
||||
API->>R: Verifier code + session_token
|
||||
R-->>API: Code valide
|
||||
API->>API: Generer JWT
|
||||
API->>R: Stocker session
|
||||
API-->>F: 200 OK + { access_token, user }
|
||||
F->>F: Stocker token
|
||||
F-->>U: Connecte
|
||||
end
|
||||
|
||||
@@ -867,6 +889,51 @@ Content-Type: application/json
|
||||
}
|
||||
```
|
||||
|
||||
**Réponse standard (200 OK) — 2FA désactivée:**
|
||||
```json
|
||||
{
|
||||
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
|
||||
"token_type": "Bearer",
|
||||
"expires_in": 18000,
|
||||
"user": {
|
||||
"username": "jean_dupont",
|
||||
"role": "client"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Réponse avec 2FA (200 OK) — quand 2FA activée par le client ET Telegram lié ET admin l'a activée:**
|
||||
```json
|
||||
{
|
||||
"requires_2fa": true,
|
||||
"session_token": "550e8400-e29b-41d4-a716-446655440000"
|
||||
}
|
||||
```
|
||||
> Un code à 6 chiffres est envoyé automatiquement sur le compte Telegram lié. Le `session_token` expire dans **5 minutes**.
|
||||
|
||||
**Erreurs possibles:**
|
||||
- `400` - Données manquantes
|
||||
- `401` - Identifiants incorrects
|
||||
|
||||
---
|
||||
|
||||
### Vérifier le code 2FA
|
||||
|
||||
**Valider le code Telegram reçu pour finaliser la connexion**
|
||||
|
||||
```bash
|
||||
POST /api/v1/auth/2fa/verify
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
**Requête:**
|
||||
```json
|
||||
{
|
||||
"session_token": "550e8400-e29b-41d4-a716-446655440000",
|
||||
"code": "483721"
|
||||
}
|
||||
```
|
||||
|
||||
**Réponse (200 OK):**
|
||||
```json
|
||||
{
|
||||
@@ -881,8 +948,73 @@ Content-Type: application/json
|
||||
```
|
||||
|
||||
**Erreurs possibles:**
|
||||
- `400` - Données manquantes
|
||||
- `401` - Identifiants incorrects
|
||||
- `400` - `session_token` ou `code` manquant
|
||||
- `401` - Code incorrect ou session expirée (TTL 5 min)
|
||||
- `429` - Trop de tentatives (rate limiting)
|
||||
|
||||
---
|
||||
|
||||
### Statut 2FA du compte
|
||||
|
||||
**Obtenir l'état de la 2FA pour le compte connecté**
|
||||
|
||||
```bash
|
||||
GET /api/v1/two-fa/status
|
||||
Authorization: Bearer <token>
|
||||
```
|
||||
|
||||
**Réponse (200 OK):**
|
||||
```json
|
||||
{
|
||||
"two_fa_enabled": true,
|
||||
"telegram_linked": true,
|
||||
"admin_2fa_enabled": true
|
||||
}
|
||||
```
|
||||
|
||||
| Champ | Description |
|
||||
|-------|-------------|
|
||||
| `two_fa_enabled` | La 2FA est activée sur ce compte client |
|
||||
| `telegram_linked` | Un compte Telegram est lié (prérequis pour activer) |
|
||||
| `admin_2fa_enabled` | L'admin a activé la 2FA dans les paramètres globaux |
|
||||
|
||||
---
|
||||
|
||||
### Activer / Désactiver la 2FA
|
||||
|
||||
**Basculer l'état de la 2FA sur son propre compte**
|
||||
|
||||
```bash
|
||||
POST /api/v1/two-fa/toggle
|
||||
Authorization: Bearer <token>
|
||||
Content-Type: application/json
|
||||
```
|
||||
|
||||
**Requête:**
|
||||
```json
|
||||
{
|
||||
"enabled": true
|
||||
}
|
||||
```
|
||||
|
||||
**Réponse (200 OK):**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"two_fa_enabled": true
|
||||
}
|
||||
```
|
||||
|
||||
**Prérequis pour activer (`"enabled": true`):**
|
||||
1. Le client doit avoir lié son compte Telegram (via `/api/v1/auth/link-telegram`)
|
||||
2. L'administrateur doit avoir activé `telegram_2fa_enabled` dans les paramètres globaux
|
||||
|
||||
**Erreurs possibles:**
|
||||
- `400` - Telegram non lié (impossible d'activer sans compte Telegram)
|
||||
- `403` - La 2FA n'est pas autorisée par l'administrateur
|
||||
- `401` - Non authentifié
|
||||
|
||||
> **Interface utilisateur:** Sur le frontend web (page profil) et l'app mobile, un toggle permet d'activer/désactiver la 2FA directement depuis les paramètres du compte.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user