edu-sharing documentation

Export des données (RGPD)

Avec la fonction de protection des données, un utilisateur peut demander une copie de toutes les données personnelles que edu-sharing a stockées à son sujet – conformément au droit d'accès du RGPD. Une demande est traitée de manière asynchrone en arrière-plan ; dès que l'export est prêt, l'utilisateur est notifié par e-mail et peut le télécharger.



Ce que fait la fonction

Un utilisateur (ou un administrateur en son nom) peut demander un export autonome des données RGPD. edu-sharing collecte toutes les données stockées sur cet utilisateur, les emballe et les met à disposition pour téléchargement. Le traitement se fait en arrière-plan — la demande est immédiatement accusée de réception, et l'export réel est assemblé par un travail planifié.

Ce qui est exporté

Selon la configuration opérationnelle (voir partie B), l'export contient :

  • Répertoire personnel — tous les dossiers et objets dans l'espace de travail personnel de l'utilisateur.

  • Collections — à la fois privées et partagées appartenant à l'utilisateur.

  • Objets partagés — objets et dossiers appartenant à l'utilisateur et partagés avec d'autres.

  • Retours — entrées de feedback soumises par l'utilisateur.

  • Commentaires — commentaires rédigés par l'utilisateur.

  • Zone Safe — contenus personnels et partagés dans la zone protégée "Safe".

Pour chaque objet, l'archive peut contenir :

  • les métadonnées au format .json.

  • le fichier original (contenu binaire).

  • la vignette (.png).

Un rapport PDF récapitulatif est également généré. Il liste les données de base et les informations du compte utilisateur, par exemple :

  • Prénom, nom, nom d'utilisateur et éventuelles identifiants secondaires (locales),

  • Adresse e-mail et rôle,

  • École / numéro d'école, centres médias et adhésions aux groupes,

  • première et dernière connexion,

  • collections privées et partagées, retours et commentaires,

  • une série de liens d'information ainsi que la date d'export.

Formats de sortie

L'export est fourni sous deux formes possibles :

  • Archive ZIP complète — export complet des données (métadonnées, données binaires, vignettes) incluant le rapport récapitulatif.

  • Seulement le rapport PDF — uniquement le fichier PDF récapitulatif, sans l'archive de fichiers.

La forme produite dépend de la configuration décrite dans la partie B.

Comment demander un export

L'export est déclenché via l'application qui appelle le point de terminaison REST :

POST /iam/v1/people/{repository}/{person}/dataprotection
  • Utilisez -home- comme valeur pour {repository} pour le dépôt personnel et -me- comme valeur pour {person} pour l'utilisateur actuel.

  • Pour demander un export pour un autre utilisateur, des droits administratifs sont nécessaires.

Réponses :

  • 200 OK — la demande a été acceptée (un nouvel export a été mis en file d'attente).

  • 409 Conflict — un export a déjà été demandé ou est en cours pour cet utilisateur ; l'entrée actuelle de la file d'attente est renvoyée.

Ce qui se passe ensuite

  1. La demande est mise en file d'attente avec le statut REQUESTED.

  2. Le travail planifié la prend en charge, passe son statut à RUNNING et assemble l'export.

  3. Une fois terminé, le statut passe à FINISHED et l'utilisateur reçoit un e-mail avec un lien de téléchargement (uniquement si le compte dispose d'une adresse e-mail).

Le statut actuel et l'objet de téléchargement résultant peuvent être récupérés à tout moment avec :

GET /iam/v1/people/{repository}/{person}/dataprotection

Cela retourne le statut de la file d'attente et, une fois disponible, le nœud de l'export terminé. Tant qu'aucun export terminé n'existe, le point de terminaison répond par 404 Not Found.

Période de disponibilité

Un export terminé est conservé uniquement pour une période de rétention limitée puis supprimé automatiquement (par défaut : 10 jours — voir partie B).

Si un nouvel export est demandé après qu'un précédent est terminé, cela supprime l'ancien export et démarre un nouveau. Tant qu'une demande est encore REQUESTED ou RUNNING, une demande répétée n'a aucun effet (retourne 409).


Exploitation / Configuration

Activation de la fonction

L'export des données RGPD est configuré dans le bloc repository.dataprotection dans edu-sharing.conf. Les clés disponibles et leurs valeurs par défaut sont documentées dans edu-sharing.reference.conf :

hocon

repository {
    dataprotection: {
        enabled: false
        //retentionPeriod: "PT240H"
        //metadataExport: true
        //binaryExport: true
        //summaryExport: true
        //fileName: "dataprotectioninfo_edu-sharing"
        //templatePath: "html/dataprotection/report.html"
        //links: ["http://edu-sharing.com","http://edu-sharing.net"]
        //cronExpression: "Cron[0 * * * * ?]"
    }
}

La fonction est désactivée par défaut. En définissant enabled: true, le travail de traitement en arrière-plan périodique est enregistré, qui traite la file d'attente des exports.

Prérequis : table de base de données

La file d'attente est stockée dans la table de base de données edu_dataprotection_queue. Le script de création associé dataprotection-queue.sql doit faire partie des scripts de démarrage (il est inclus dans les scripts principaux de edu-sharing.reference.conf ) :

sql

CREATE TABLE edu_dataprotection_queue
(
    "user"     varchar(100) not null UNIQUE,
    status     varchar(100) not null,
    requested  timestamp    not null,
    node_id    varchar(36),
    finished   timestamp
);

Référence de configuration

Clé

Valeur par défaut

Effet

enabled

false

Active la fonction et le travail de traitement en arrière-plan associé.

cronExpression

Cron[0 * * * * ?]

Planification du travail de traitement des exports (par défaut : chaque minute).

retentionPeriod

PT240H (ISO-8601, = 10 jours)

Durée pendant laquelle un export terminé est conservé avant suppression automatique.

metadataExport

true

Inclut les métadonnées des nœuds (.json) dans l'export.

binaryExport

true

Inclut les fichiers originaux et les vignettes dans l'export.

summaryExport

true

Génère le rapport PDF récapitulatif.

fileName

dataprotectioninfo_edu-sharing

Nom de base du fichier résultant (un préfixe de date yyMMdd_ ainsi que .zip / .pdf sont ajoutés).

templatePath

html/dataprotection/report.html

Modèle Thymeleaf utilisé pour générer le rapport PDF récapitulatif.

links

http://edu-sharing.com

Liens informatifs affichés dans le rapport PDF (liste séparée par des virgules).

Comment les indicateurs déterminent le format de sortie

Les trois indicateurs d'export définissent ce qui est exporté et déterminent ensemble le format produit :

  • summaryExport=true et metadataExport=false → le résultat est un rapport PDF unique (pas d'archive ZIP). C'est le mode "rapport seul".

  • Sinon → le résultat est une archive ZIP, dont le contenu dépend des indicateurs :

    • metadataExport=true ajoute les fichiers de métadonnées .json ainsi que la structure des dossiers de chaque zone (home, collection, shared, feedback, comment, safe/home, safe/shared).

    • binaryExport=true ajoute les fichiers originaux et les vignettes .png.

    • summaryExport=true ajoute le rapport PDF récapitulatif dans l'archive.

Remarque : avec metadataExport=false, la structure des dossiers n'est pas créée, donc les données binaires n'ont pas d'emplacement pour être stockées — c'est pourquoi désactiver les métadonnées tout en activant le résumé donne un résultat PDF pur.

Comportement de rétention

À chaque exécution, le travail de traitement vérifie tous les exports FINISHED. Si le nœud d'un export terminé est plus ancien que la retentionPeriod, le nœud d'export ainsi que l'entrée correspondante dans la file d'attente sont supprimés. Cela empêche la conservation des données personnelles plus longtemps que nécessaire et limite la consommation d'espace de stockage.

Notification

Lorsqu'un export est terminé, un e-mail est envoyé à l'utilisateur en utilisant le modèle de mail gdpr. Il contient le lien de téléchargement ainsi que la période de rétention (en jours). Aucun e-mail n'est envoyé si le compte utilisateur n'a pas d'adresse e-mail enregistrée.

Stockage / Empreinte

  • Les exports sont assemblés dans un répertoire de travail à côté du Content-Store : <contentstore>/../dataprotection. Les fichiers temporaires y sont supprimés une fois l'export sauvegardé.

  • L'export terminé est stocké en tant que nœud dans le dossier système GDPR (dans Company Home / Edu_Sharing_System /) et rendu lisible pour l'utilisateur exporté (permission Consumer), afin qu'il puisse le télécharger via le lien.

Notes d'exploitation et limitations actuelles

  • La langue du rapport / fuseau horaire sont actuellement fixés en allemand (Europe/Berlin, Locale.GERMANY), indépendamment du profil de l'utilisateur.

  • Les évaluations (Ratings) ne font pas encore partie du rapport récapitulatif.

  • Le travail de traitement s'exécute selon la cronExpression configurée ; augmenter l'intervalle réduit la charge en arrière-plan lorsque les exports sont rares.