fix(auth): garder l identite Discord du cote verifie

This commit is contained in:
GGThed
2026-08-16 23:36:30 -04:00
parent 437b229c82
commit 9647003c3f
16 changed files with 833 additions and 340 deletions
+13 -4
View File
@@ -1,8 +1,9 @@
# Le schéma réel, et comment sortir de `create_all()`
> **État au 2026-08-11** : l'outil de relevé existe et est testé. Le relevé
> lui-même n'a pas été exécuté — il demande un accès à la base de production,
> qui ne peut pas venir du dépôt. Tout ce qui suit attend cette exécution.
> **État au 2026-08-16** : l'outil de relevé existe et est testé, y compris
> pour les collisions d'identité Discord. Le relevé lui-même n'a pas été
> exécuté — il demande un accès à la base de production, qui ne peut pas venir
> du dépôt. Tout changement de schéma ci-dessous attend cette exécution.
## Pourquoi c'est le nœud
@@ -60,6 +61,14 @@ existe-t-il encore ? (`SEC-003`) :
python app/supporting_scripts/schema_report.py --check-seed-accounts
```
L'identité Discord est désormais conservée côté serveur et toute nouvelle
collision est refusée par l'application. Les doublons historiques restent à
identifier avant d'ajouter la contrainte `UNIQUE` de `SEC-012` :
```bash
python app/supporting_scripts/schema_report.py --check-discord-identities
```
## Étape 3 — Alembic, décrivant le schéma **réel** (`DB-002`)
Le piège de cette étape tient en une phrase : **la migration initiale doit
@@ -111,7 +120,7 @@ Dans cet ordre, parce qu'ils dépendent tous de `DB-002` :
| `DB-008` | Trancher `attendance_confirmed` côté tryout | `discord_bot.py` écrit un attribut fantôme ; aujourd'hui journalisé en avertissement |
| `DB-009` | Horodatages avec fuseau | `datetime.utcnow` partout, déprécié en 3.12 |
| `ARCH-001` | Fusionner coach/équipe sur la relation m2m | Migration de données ; `app/permissions.py` rend la duplication inoffensive **en lecture** seulement, l'écriture crée toujours les deux |
| `SEC-012` | Identité Discord côté serveur, `unique=True` | La colonne doit être unique, donc dédoublonnée d'abord |
| `SEC-012` | Ajouter `unique=True` sur l'identité Discord | La valeur OAuth reste côté serveur et les nouvelles collisions sont refusées ; les lignes historiques doivent être dédoublonnées d'abord |
## Ce qu'on ne fait pas