Tags:
create new tag
, view all tags

Suppression d'un utilisateur

On parle ici de la suppression d'un utilisateur de CDSLogin. Certaines contraintes sont imposées par le portail ainsi que par les annotations. Un brainstorming a eu lieu le mercredi 14 janvier. En voici le résultat.

Contraintes

Les 2 principales contraintes qui ont menés à la solution proposée sont décrit ici.

Le système d'annotation impose que l'auteur d'une annotation soit connu. Il faut donc qu'il se soit enregistré et identifié pour pouvoir poster une annotation. Cela implique qu'un compte qui a écrit une annotation ne doit pas pouvoir être supprimé.

Le portail permet à l'utilisateur de sauvegarder des données. Il est important de faire le ménage pour les utilisateurs qui sont inactifs, et de supprimer les données qui sont inutilisées, pour diminuer l'espace disque dans iRods.

Solution

Pour chaque utilisateur, il y aura dans la base un drapeau indiquant s'il peut être supprimé ou non. Par défaut, ce drapeau indique que la suppression est possible. A chaque fois qu'un utilisateur crée une annotation, ce drapeau est mis à jour par le système d'annotations pour interdire la suppression. Il n'y a pas tant d'annotation que ça, donc pour simplifier on met à jour ce drapeau systématiquement. Le code de CDSLogin vérifiera que ce drapeau ne peut pas changer d'état pour un compte anonyme.

A chaque connexion d'un utilisateur (login), ou bien à chaque fois qu'un utilisateur qui a coché "Remember me" se connecte, la date de cette action est mise à jour dans la base des utilisateurs. Grâce à cette date, le délai d'inactivité de tout utilisateur est connu.

Toutes les 24H, valeur mise dans le fichier de configuration, un processus vérifie la durée d'inactivité de chaque utilisateur. Si cette durée est supérieure à une valeur définie, dans le même fichier de configuration, un processus de suppression de l'utilisateur se déclenche.

Pour les comptes anonymes, la durée d'inactivité avant suppression est inférieure à la durée pour un compte identifié. La suppression d'un compte anonyme suppose la suppression des données iRods de ce compte, ainsi que la suppression de cet utilisateur dans la base des utilisateurs.

Pour un compte identifié, N jours, aussi défini dans le fichier de configuration, avant la suppression du compte, un mail est envoyé à l'utilisateur pour le prévenir que son compte va être supprimé. Lorsque le délai est passé, on supprime les données iRods pour ce compte. Mais on ne supprime ce compte dans la base des utilisateurs que si son drapeau le permet.

Remarques

Il est actuellement impossible de supprimer des fichiers iRods via Jargon. Au moment de la demande de suppression, les fichiers sont simplement copiés dans une zone "Trash". Actuellement, il faut alors supprimer le contenu de tout le "Trash" à la main (via l'interface Web). Il faut trouver une solution à ce problème.

Les durées d'inactivité envisagées actuellement sont : - environ 3 mois pour un compte anonyme (disons 90 jours) - environ 6 mois pour un compte identifié (disons 180 jours)

Une fois le drapeau positionné de telle manière à empêcher la suppression d'un utilisateur, il n'y a pas d'API pour changer cette valeur dans l'autre sens.

Il n'y a pas d'email pour un compte anonyme, il n'y a donc pas moyen de les prévenir à l'avance que la suppression va avoir lieu.

Sans rapport direct avec la suppression d'un compte, il y aura aussi des quotas disque pour chaque utilisateur iRods. Ils pourront être différents entre les comptes anonymes et les comptes identifiés.

Au niveau technique, c'est le processus CDSLogin qui enclenche la suppression. A chaque suppression d'un utilisateur, ce processus appele une liste d'URLs, pour permettre à d'autres entités de faire le ménage de leur côté. Pour l'instant, la seule entrée de cette liste concerne le portail. Le système d'annotations n'a pas besoin d'être prévenu, puisqu'il est interdit de supprimer un utilisateur qui y est référencé.

Tous les appels entre CDSLogin et le monde extérieur se font via des URLs. Pour des raisons de sécurité, il faut peut-être envoyer des clés à certaines requêtes. Par exemple pour changer la valeur du drapeau de suppression, on peut demander une clé qui peut être mise dans un fichier de configuration du système d'annotation. On peut mettre en place un système du même type lorsque CDSLogin transmet une demande de suppression au portail. La clé pourrait être le userId d'un utilisateur qui a le rôle "admin". Au démarrage du système d'annotation, il peut alors faire un "login" avec un compte admin, et obtenir ainsi la clé (il vérifiera aussi que son compte a bien le rôle "admin").

A part le délai d'inactivité, et l'envoi d'un mail, rien ne distingue un compte anonyme d'un compte identifié, une fois la suppression déclenchée.

-- PascalWassong - 14 Jan 2009

Topic revision: r1 - 2009-01-14 - PascalWassong
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback