Remplace les diagrammes Mermaid par DBML (via kroki-dbml) pour une meilleure expressivité des schémas de base de données : - Ajout support notes, contraintes et indexes détaillés - Migration de tous les schémas d'entités partagées - Ajout fichier exemple dbml-example.md - Configuration plugin mkdocs-kroki pour rendu DBML
66 lines
1.8 KiB
Markdown
66 lines
1.8 KiB
Markdown
# Devices
|
|
|
|
📖 Appareils de confiance et gestion multi-device
|
|
|
|
## Diagramme
|
|
|
|
```kroki-dbml
|
|
Table users {
|
|
id uuid [primary key]
|
|
}
|
|
|
|
Table devices {
|
|
id uuid [primary key]
|
|
user_id uuid [not null, ref: > users.id]
|
|
device_name varchar(255) [note: 'User-defined device name']
|
|
os varchar(50) [note: 'iOS, Android, Windows, macOS, Linux']
|
|
browser varchar(50) [note: 'Safari, Chrome, Firefox, etc.']
|
|
device_type device_type_enum [not null, note: 'mobile, tablet, desktop, car']
|
|
is_trusted boolean [not null, default: false, note: 'Bypass 2FA for 30 days if true']
|
|
trusted_until timestamp [note: 'NULL if not trusted, expires after 30 days']
|
|
first_seen_at timestamp [not null, default: `now()`]
|
|
last_seen_at timestamp [not null, default: `now()`]
|
|
last_ip inet [not null]
|
|
last_city varchar(100)
|
|
last_country_code char(2)
|
|
|
|
indexes {
|
|
(user_id, last_seen_at) [note: 'List user devices by recent activity']
|
|
(user_id, is_trusted) [note: 'Find trusted devices for user']
|
|
}
|
|
}
|
|
|
|
Table sessions {
|
|
id uuid [primary key]
|
|
device_id uuid [ref: > devices.id]
|
|
}
|
|
|
|
Enum device_type_enum {
|
|
mobile [note: 'Smartphone Android/iOS']
|
|
tablet [note: 'Tablette']
|
|
desktop [note: 'Ordinateur']
|
|
car [note: 'Système embarqué (CarPlay/Android Auto)']
|
|
}
|
|
```
|
|
|
|
## Légende
|
|
|
|
**Types d'appareil** :
|
|
|
|
- `mobile` : Smartphone Android/iOS
|
|
- `tablet` : Tablette
|
|
- `desktop` : Ordinateur
|
|
- `car` : Système embarqué (CarPlay/Android Auto)
|
|
|
|
**Appareil de confiance** :
|
|
|
|
- Option "Ne plus demander sur cet appareil" → bypass 2FA pendant **30 jours**
|
|
- Révocable depuis paramètres compte
|
|
- Liste des appareils de confiance visible
|
|
|
|
**Sécurité** :
|
|
|
|
- Détection automatique nouveau device → notification push + email
|
|
- Localisation suspecte (pays différent) → alerte
|
|
- Révocation individuelle ou globale possible
|