fix: manage quantity && update geoloca

This commit is contained in:
2026-05-12 19:35:02 +02:00
parent 1319a4219a
commit 9a2f0d91ad
7 changed files with 815 additions and 42 deletions
+137 -5
View File
@@ -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.
---