Project

General

Profile

Actions

Bug #9194

closed

L'abonnement d'un utilisateur n'est pas supprimé si ce dernier n'a plus les droits d'accès à l'application

Added by David Lesimple about 4 years ago. Updated about 2 years ago.

Status:
Closed
Priority:
High
Start date:
10/23/2017
Due date:
% Done:

100%

Estimated time:
Navigateur:
Tous
Votre version de Silverpeas:
6.0-SNAPSHOT
Système d'exploitation:
Votre base de données:
Toutes
Livraison en TEST:
Livraison en PROD:

Description

Scénario :

1. L'utilisateur est par exemple lecteur d'une application Actualités et s'abonne à celle-ci
2. L'administrateur de cette application lui enlève les droits de lecture
3. Si une actualité est crée dans l'application, alors l'utilisateur reçoit quand même une notification liée à son abonnement
mais ne peut accéder à l'actualité crée faut d'avoir les droits d'accès suffisant.

Reproduit en 5.15.6 et 6.0-SNAPSHOT

Actions #2

Updated by Miguel Moquillon over 2 years ago

  • Status changed from New to In progress...
  • Assignee set to Miguel Moquillon
  • Target version set to Version 6.1

Ce bug touche un certain nombre d'applications autre que QuickInfo.
Dans Kmelia, le bogue n'est pas reproduit. Toutefois, la personne dont les droits d'accès ont été retiré est toujours cité parmi les abonnés à la GED ou au dossier.

Actions #4

Updated by Nicolas Eysseric over 2 years ago

  • Status changed from Resolved to Integration in progress...
Actions #5

Updated by Nicolas Eysseric over 2 years ago

  • Status changed from Integration in progress... to Assigned
Actions #6

Updated by Miguel Moquillon over 2 years ago

  • Status changed from Assigned to Resolved
Actions #7

Updated by Yohann Chastagnier about 2 years ago

  • Status changed from Resolved to Integration in progress...
Actions #8

Updated by Yohann Chastagnier about 2 years ago

  • Status changed from Integration in progress... to Assigned
Actions #9

Updated by Yohann Chastagnier about 2 years ago

  • Status changed from Assigned to In progress...
Actions #10

Updated by Yohann Chastagnier about 2 years ago

Lors de l'analyse des PRs à l'intégration, des problématiques fonctionnelles ont été soulevées.

Le travail qui a été réalisé dans les PRs de la note 3 consiste à supprimer les abonnements d'un utilisateur ou d'un groupe sur une instance de composant (application) ou sur des nœuds de l'instance de composant (dossiers de l'application) lorsqu'il n'existe plus de rôle pour l'utilisateur ou le groupe.
Dès lors qu'un rôle est retiré à un utilisateur (ou un groupe), le ou les abonnements de ce dernier liés à l'instance de composant (ou au noeud) sont supprimés.
Par ailleurs, un autre problème a été corrigé dans le cadre de ce REDMINE : les droits d'un utilisateur sur les noeuds d'une instance de composant n'étaient pas supprimés lorsque l'utilisateur n'avaient plus aucun droit au niveau de l'instance de composant.

La logique de ces corrections qui semblent justes au premier abord, posent en réalité quelques problèmes fonctionnels dans Silverpeas, du fait de son actuelle gestion des droits.

Prenons un exemple.
Un utilisateur A a un rôle Rédacteur sur une GED et il a spécifiquement le rôle de Lecteur sur une dizaine de dossier de cette GED.
Par ailleurs, A s'est abonné à une multitude de dossier dans cette GED.

Dans le cas fonctionnel où A a de nouvelles responsabilités dans sa structure qui impliquent qu'il passe du rôle Rédacteur à Publieur, l'administrateur de la plate-forme va modifier ses droits :
  • dans le cas où il affecte dans un premier temps le rôle Publieur à l'utilisateur et qu'il lui retire ensuite celui de Rédacteur, il n'y a pas de problème en particuliers, car à l'instant T, l'utilisateur aura toujours un rôle sur la GED et rien ne sera supprimé au niveau des nœuds ou des abonnements
  • dans le cas où il retire d'abord le rôle Rédacteur à l'utilisateur et qu'il lui affecte ensuite celui de Publieur, il y a alors un problème. Entre ces deux actions, le système va considérer que l'utilisateur n'a plus de rôle sur la GED et va supprimer tous les rôles spécifiques sur les dossiers de celle-ci et supprimer tous les abonnements liés de l'utilisateur. Cela ne correspond malheureusement pas à ce qu'est attendu par l'administrateur.

Il n'est pas concevable d'imaginer qu'un administrateur d'une plate-forme Silverpeas soit au fait de cette finesse de gestion.

Le problème soulevé découle finalement de la gestion transactionnelle de l'affectation des droits actuellement en place dans Silverpeas.
En effet, pour passer un utilisateur d'un rôle à un autre, il faut 2 transactions fonctionnelles : un ajout et une suppression. Selon l'ordre dans lequel sont enchaînées ces dernières, des dommages collatéraux peuvent survenir.

Pour palier à cela, il faudrait que la gestion des rôles sur une instance d'un composant ou sur un nœud soit matricielle de sorte qu'il n'existe qu'une seule transaction pour prendre en compte tous les changements de rôle.
Cela représente cependant, notamment dans le cadre d'un BUG et dans le cadre de la version 6.1, un volume de travail trop conséquent et devra être réalisé pour une autre version.

Nous avons donc réfléchi a des actions pour corriger l'anomalie de ce REDMINE et celles découvertes à l'occasion qui sont une sorte de compromis qui s'inscrit dans la logique de rendre la gestion des droits matricielle :
  1. le service des abonnements sera en mesure de fournir les abonnements utilisateur ou de groupe pour lesquels l'instance de composant (ou ses nœuds) sont réellement accessibles par l'utilisateur ou le groupe.
  2. lors de l'affectation d'un rôle sur une instance de composant, ou sur un nœud d'une instance de composant, un batch de traitement des modifications des droits est enregistré pour être exécuté dans un délai N (de même pour un rôle retiré). Lorsqu'un tel batch est déjà enregistré et que des rôles sont de nouveau modifiés, le délai est de nouveau repositionné à N. Après un délai N sans modification d'affection de rôle, le système exécute le batch de traitement des modification des droits. Ce dernier permet au différents modules de Silverpeas de pouvoir réajuster l'état de ses données vis-à-vis de l'état des droits. Cela permettra notamment :
    • au service de gestion des droits lui-même de supprimer les droits sur les dossiers si nécessaire
    • au service des abonnements de supprimer les abonnements pour lesquels l'utilisateur ou le groupe n'a plus accès à la ressource en question.
Actions #11

Updated by Miguel Moquillon about 2 years ago

  • Status changed from In progress... to Resolved

Au regard de la complexité du code à produire nécessaire pour corriger le bug, du fait de la façon dont sont gérés les droits côté IHM, il a été décidé de résoudre le problème différemment, en appréhendant les choses différemment.

La vraie résolution nécessite en fait de mettre en conformité la gestion des droits d'un espace, d'une application ou d'une ressource d'une application (en général un nœud représentant un dossier, une catégorie, ...) dans l'IHM avec le mécanisme de gestion des droits dans le code métier. Ceci sera le cadre d'une prochaine feature pour une version ultérieure de Silverpeas 6.

En attendant, le solution repose sur la vérification des droits de l'abonné (utilisateur ou groupe d'utilisateurs) à accéder à la ressource abonnée aussi bien lors de l'envoie de la notification aux abonnés qu'au niveau de l'affichage des abonnements d'un utilisateur dans son espace personnel. Ainsi, si l'abonné ne peut plus accéder à la ressource pour laquelle il est abonnée lors de la notification aux abonnés, celle-ci ne lui sera pas envoyé. De même, lors de l'affichage de ses abonnements, un abonnement à une ressource qu'il ne peut plus accéder sera grisé et non cliquable ; toutefois, il pourra supprimer celui-ci s'il le souhaite. L'avantage de cette solution est que l'abonnement d'un utilisateur pourra être automatiquement et de façon transparente réactivée dès qu'il a accès à nouveau à la ressource abonnée sans avoir à s'abonner à nouveau. L'inconvénient, et non des moindres, est que ces abonnements inactifs polluent la base de données de Silverpeas et ralentissent la notification des abonnés et l'affichage des abonnements d'un utilisateur. Aussi, il est probable qu'à terme, une fois la feature sur une meilleur gestion des droits côté IHM soit réalisée, ce fonctionnement soit retiré ; les abonnements d'un utilisateur ou d'un groupe pour lequel les droits d'accès ont été retirés seront alors tout simplement supprimés.

Actions #12

Updated by Yohann Chastagnier about 2 years ago

  • Status changed from Resolved to Integration in progress...
Actions #13

Updated by Marc Avenel about 2 years ago

La modification a été apportée Vendredi sur notre serveur "https://v6.akwel.net/silverpeas/admin/jsp/silverpeas-main.jsp" Aujourd'hui : notification a été adressé à Marc AVENEL
Mais aussi à l'ensemble des acteurs de la GED
  • Ceci est-ce du que la GED est paramétrée de la manière suivante: Notification : Active
Actions #14

Updated by David Lesimple about 2 years ago

Marc Avenel a écrit :

La modification a été apportée Vendredi sur notre serveur "https://v6.akwel.net/silverpeas/admin/jsp/silverpeas-main.jsp" Aujourd'hui : notification a été adressé à Marc AVENEL
Mais aussi à l'ensemble des acteurs de la GED
  • Ceci est-ce du que la GED est paramétrée de la manière suivante: Notification : Active

Vous vous êtes trompé de ticket je pense.. ce ne serait pas plutot #10671 ?

Actions #15

Updated by Marc Avenel about 2 years ago

Effectivement. Toutes mes excuses..

Actions #16

Updated by Yohann Chastagnier about 2 years ago

  • Status changed from Integration in progress... to Closed
  • % Done changed from 0 to 100

Validé et intégré en 6.x

Actions

Also available in: Atom PDF