Objet archiver anonymiser

Créer des statuts pour faciliter l’archivage et, éventuellement, l’anonymisation des objets éditoriaux ayant des informations personnelles ; faciliter les traitements à mettre en oeuvre.

Utilisation

Une fois activé selon la procédure standard, le plugin est directement opérationnel.

Les objets immédiatement pris en charge par le plugin sont :
auteur :

  • archiver une autrice ou un auteur,
  • anonymiser une autrice ou un auteur.

article :

  • archiver un article.

D’autres objets pourront également bénéficier de ces statuts, sous réserve des déclarations nécessaires et des traitements utiles supplémentaires souhaités.

L’objectif d’un statut

L’objectif du statut d’un objet archivé est de retirer l’objet de la base active, en d’autres termes de ne plus le voir. L’effet désiré pour une autrice ou un auteur qui prend le statut d’archive est l’absence d’accès à l’espace privé ou à l’espace public restreint.

L’objectif du statut anonymisé est de rendre inintelligible des données de cet objet, en d’autres termes, de faire retirer des données sans pour autant supprimer l’objet. L’effet désiré pour un objet en statut anonymise est de retirer de façon définitive certaines données tout en conservant celles qui seront nécessaires pour un traitement statistiques ou comptables.

On peut ajouter à la liste des choix des statuts d’un objet, aussi bien un seul de ces deux statuts que les deux.

Le traitement pour atteindre l’objectif

Dès le basculement d’un statut à un autre, le plugin provoquera un traitement pour permettre d’obtenir l’effet désiré. Pour suivre ces basculements, les pipelines post_edition et post_insertion sont utilisés.

Est décrit dans la table de l’objet, sous la clé champs_anonymises, l’effet désiré d’une anonymisation, qui ne va concerner qu’une partie de l’objet (certains de ses champs). Pour ce faire, le pipeline declarer_tables_objets_sql est utilisé.

La mise en oeuvre du traitement est réalisée de façon générique par trois fonctions (placée dans le répertoire inc) :

  • anonymiser_objet
  • archiver_objet
  • desarchiver_objet

Ces fonctions proposent un traitement générique qui peut être personnalisé en créant une fonction éponyme de l’objet concerné. C’est le cas pour l’objet auteur qui dispose, pour l’archivage et le désarchivage, d’un traitement particulier :

  • archiver_auteur
    Afin de ne plus permettre un accès, l’identifiant et le mot de passe sont mis à zéro (mais sauvegarder dans une table qui permettra de les retrouver si nécessaire).
  • desarchiver_auteur
    Afin de rétablir l’accès, l’identifiant et le mot de passe de l’autrice ou de l’auteur sont délacés de la table de sauvegarde vers la table de l’objet.

En ce qui concerne l’anonymisation, la fonction anonymiser_objet créée une tâche qui procédera à la destruction partielles des informations de l’objet dans les trois jours. La tâche est signalée sur le contenu de l’objet et peut être annulée. Ce comportement peut, bien évidement être modifié et adapté à vos besoins.

Les étapes à suivre pour donner ses statuts et les traitements ad hoc à vos objets

L’unique étape consiste, dans vos plugins, à indiquer les informations nécessaires dans la déclaration de la table de l’objet. Vous pouvez vous inspirer de la démarche que le présent plugin a suivi pour offrir un statut d’archivage aux articles :

function objet_archiver_anonymiser_declarer_tables_objets_sql($tables){
	// -- Permettre d'archiver les articles

	// rajouter une ligne à la définition des statuts de l'objet éditorial
	$tables['spip_articles']['statut_textes_instituer']['archive'] = 'objet_archiver_anonymiser:statut_archive';
	// donner un titre au statut et une icône
	$tables['spip_articles']['statut_titres']['archive'] = 'objet_archiver_anonymiser:statut_archive';
	// définir l'ensemble du tableau statut_images, manquant
	$tables['spip_articles']['statut_images'] = [
		'prepa'    => 'puce-preparer-xx.svg',
		'prop'     => 'puce-proposer-xx.svg',
		'publie'   => 'puce-publier-xx.svg',
		'refuse'   => 'puce-refuser-xx.svg',
		'archive' => 'puce-archiver-xx.svg',
		'poubelle' => 'puce-supprimer-xx.svg',
	];
	return $tables;
}

Il vous serait possible de créer un statut d’anonymisation des articles, ce qui n’a pas été fait car les articles n’ont pas pour finalité d’accueillir des informations nominatives que l’on souhaiterait retirer. Si un telle démarche vous intéresse, il conviendra alors de procéder aux déclarations suivantes :

function objet_archiver_anonymiser_declarer_tables_objets_sql($tables){
	// -- Permettre d'anonymiser les articles

	// rajouter une ligne à la définition des statuts de l'objet éditorial
	$tables['spip_articles']['statut_textes_instituer']['anonymise'] = 'objet_archiver_anonymiser:statut_anonymise';
	// donner un titre au statut et une icône
	$tables['spip_articles']['statut_titres']['anonymise'] = 'objet_archiver_anonymiser:statut_anonymise';
	// rajouter une ligne à la définition des statut_images
	$tables['spip_articles']['statut_images']['anonymise'] = 'puce-anonymiser-xx.svg';

	// definir l'anonymisation
	$tables['spip_articles']['champs_anonymises'] = [
		'surtitre' => 'crypt', // un cryptage
		'titre' => '<:info_sans_titre:>', // un idiome de langue
		'soustitre' => 'crypt',
		'descriptif' => 'binary', // un cryptage en 0 et 1
		'nom_site' => 'anonymisé', // une chaine de texte
		'url_site' => 'void', // rien
		'chapo' => 'crypt',
		'texte' => 'crypt',
		'ps' => 'crypt',
		'date' => 'blank_date', // 0000-00-00 00:00:00
		'date_redac' => 'blank_date',
		'date_modif' => 'blank_date',
	];
	return $tables;
}

Vous pouvez aller plus loin en définissant un traitement spécifique, si le traitement générique ne vous suffit pas. Pour ce faire, il suffit de créer la fonction ad hoc dans le répertoire inc de votre plugin, en vous inspirant de la démarche suivie dans le présent plugin pour les auteurs.

Il n’est pas inutile de s’intéresser aux autorisations pour l’anonymisation ! Au sein de votre fichier mon_plugin_autorisations.php, une autorisation peut être donnée ou non pour changer le statut de votre OBJET :

function autoriser_OBJET_instituer_dist ($faire, $type, $id, $qui, $opt) {
	// l'admin peut tout
	if ($qui['statut'] == '0minirezo' and !$qui['restreint']){
		return true;
	}
	// les autres ne peuvent ni anonymiser ni mettre à la poubelle
	return !in_array($opt['statut'], ['poubelle', 'anonymise']);
}

Discussion

Une discussion

  • Je trouve ça dommage de ne pas avoir suivi la logique du plugin Archivage des objets qui extrait l’archive de la liste des statuts car ça n’en est pas un.
    Là on s’enferre dans une logique qui n’a toujours aucun sens.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom