GDPR & Confidentialité
Sovrium donne aux utilisateurs finaux un contrôle en libre-service sur leurs données personnelles, satisfaisant les droits GDPR fondamentaux sans intervention de l'opérateur. Un utilisateur authentifié peut télécharger une copie complète et lisible par machine de tout ce que Sovrium détient à son sujet, et peut planifier un effacement irréversible de son compte selon un calendrier sûr et réversible jusqu'au dernier moment.
Ce sont des points de terminaison destinés à l'utilisateur final — ils agissent sur les propres données de l'appelant, limitées exclusivement par la session authentifiée. Aucun id n'est jamais pris du corps de la requête.
Export de données (Articles 15 & 20)
GET /api/account/export renvoie l'empreinte complète des données personnelles de l'appelant sous forme de JSON structuré, satisfaisant le droit d'accès (art. 15) et le droit à la portabilité des données (art. 20) du GDPR.
GET /api/account/export
Cookie: <session cookie>
Aucun corps de requête, paramètre de requête ou de chemin — l'id utilisateur provient uniquement de la session. La réponse agrège quatre sources pour l'appelant :
| Source | Contenu |
|---|---|
| Profil | La ligne auth.user de l'appelant. |
| Sessions | Les lignes auth.session de l'appelant. |
| Comptes liés | Les lignes auth.account de l'appelant (fournisseurs OAuth + identifiant e-mail/mot de passe), avec tout le matériel secret omis. |
| Enregistrements créés | Chaque enregistrement de table dans l'application où created_by = caller. |
Les secrets ne sont jamais exportés. Les hachages de mots de passe, les jetons OAuth et autres matériels d'identification sont retirés de la section des comptes liés. L'export est un artefact de portabilité, pas un déversement d'identifiants.
Suppression et effacement de compte (Article 17)
POST /api/account/delete permet à un utilisateur de demander l'effacement irréversible de son compte, satisfaisant le droit à l'effacement (art. 17) du GDPR. La suppression suit un modèle d'effacement planifié avec un délai de grâce de 7 jours — jamais une destruction immédiate.
POST /api/account/delete
Cookie: <session cookie>
Content-Type: application/json
{ "confirm": true }
| Étape | Requête | Effet |
|---|---|---|
| 1. Planifier | { "confirm": true } |
Marque scheduledErasureAt = now + 7 days, révoque toutes les sessions de l'appelant (déconnecté partout), écrit un événement d'audit account.deletion.scheduled, renvoie 202 Accepted. Ne supprime pas encore. |
| 2. Annuler | { "cancel": true } |
Pendant la fenêtre, l'utilisateur se reconnecte et annule — efface scheduledErasureAt, renvoie 200 OK. |
| 3. Purger | (automatique, après la fenêtre) | Une tâche de purge supprime définitivement les lignes auth.user, auth.session, auth.account, auth.verification de l'appelant et chaque enregistrement de table où created_by = caller, puis écrit un événement d'audit account.deletion.purged. |
Un POST nu sans indicateur confirm/cancel est rejeté 400 (anti-faux-pas).
Suppression définitive, pas suppression en douceur
L'effacement effectue une suppression physique des lignes — pas la pierre tombale deleted_at de suppression en douceur utilisée ailleurs dans la plateforme. Après la purge, aucune donnée personnelle récupérable ne subsiste, comme l'exige l'art. 17.
C'est l'exception délibérée à la posture de suppression-en-douceur-par-défaut de Sovrium : les suppressions ordinaires sont des pierres tombales récupérables, mais un effacement GDPR ne doit rien laisser derrière. Les suppressions irréversibles par table via le tableau de bord d'administration nécessitent l'opt-in explicite allowForceDelete: true (voir Permissions de table) ; le point de terminaison de suppression forcée renvoie 404 lorsque la suppression forcée n'est pas autorisée.
La piste d'audit de l'effacement survit à l'utilisateur. L'événement account.deletion.purged survit à la ligne utilisateur supprimée — la clé étrangère audit_log.actor_id est ON DELETE SET NULL, de sorte que l'entrée reste un enregistrement de conformité valide avec un acteur null-ifié. Supprimer les données et prouver que les données ont été supprimées sont deux obligations distinctes.
Confidentialité dès la conception
Au-delà des droits en libre-service, la confidentialité est intégrée aux valeurs par défaut de la plateforme :
- Analytique sans cookies — les visiteurs sont identifiés par des hachages SHA-256 côté serveur ; aucune donnée personnelle ni identifiant client n'est stocké, et Do Not Track est respecté. Voir Analytique.
- Conservation bornée — les lignes supprimées en douceur vieillissent selon
ECO_RETENTION_PURGE_DAYS(voir Écoconception) ; moins de données stockées est à la fois un gain de confidentialité et de frugalité. - Aucun service externe — toutes les données personnelles restent sur votre serveur ; rien n'est expédié à un tiers.
Pages connexes
- Surveillance de l'activité — la piste d'audit des événements de suppression et d'accès.
- Suppression en douceur — le modèle de pierre tombale récupérable que l'effacement contourne délibérément.
- Permissions de table —
allowForceDeleteet accès par champ. - Durcissement de la sécurité — authentification, CSRF, anti-énumération.
- Analytique — suivi sans cookies et respectueux de la vie privée.
- Écoconception — conservation et minimisation des données.