Projet

Général

Profil

Actions

Feature #14738

fermé

Notification qu'un utilisateur ne joue plus un rôle donné dans des applications

Ajouté par Miguel Moquillon il y a environ 2 mois. Mis à jour il y a environ un mois.

Statut:
Closed
Priorité:
Normal
Assigné à:
Catégorie:
Notifications
Début:
27/02/2025
Echéance:
% réalisé:

100%

Temps estimé:
Livraison en TEST:
Livraison en PROD:

Description

Le bogue #14595 a démontré la nécessité des applications de Silverpeas d'être informée lorsqu'un utilisateur ne joue plus un rôle donné.
L'idée de cette feature est de prendre appuie sur la solution réalisée pour corriger le bogue pour la 6.5 et qui se base sur le mécanisme de notification d'événements CDI. Il s'agit ici de rendre cette solution plus générique :
  • à chaque utilisateur retiré d'un groupe, envoyer un événement sur les rôles des différentes applications pour lesquels le groupe est impliqué et pour lesquels l'utilisateur n'est plus concerné,
  • à chaque retrait d'utilisateurs ou de groupes d'un rôle d'une application, envoyer un événement sur le rôle de l'application pour lequel les utilisateurs ont été retirés si ceux-ci ne jouent pas ce même rôle par ailleurs (appartenance à autre groupe qui joue le même rôle par exemple).

Pour l'instant, l'implémentation se contraindra aux seuls utilisateurs et non aux groupes.

Mis à jour par Miguel Moquillon il y a environ 2 mois

  • Statut changé de New à In progress...

Mis à jour par Miguel Moquillon il y a environ 2 mois

  • % réalisé changé de 0 à 90

Mis à jour par Miguel Moquillon il y a environ 2 mois

  • Statut changé de In progress... à Resolved
  • % réalisé changé de 90 à 100

Cf PR https://github.com/Silverpeas/Silverpeas-Core/pull/1391 et https://github.com/Silverpeas/Silverpeas-Components/pull/894

Pour utiliser le nouveau mécanisme, il suffit d'implémenter un listener d'événements UserRoleEvent. Cet événement est envoyé par le mécanisme avec comme attributs le nom du rôle qui a vue sa liste des utilisateurs modifiée, les identifiants des instances d'applications concernées et les identifiants des utilisateurs qui ne jouent plus ledit rôle (utilisateurs retirés de la liste donc).

Voici un exemple tiré du listener de ResourcesManager et qui met à jour la liste des validateurs potentiels de chaque ressource gérée par les différentes applications ResourcesManager :

@Service
public class UserRoleEventListener extends CDIResourceEventListener<UserRoleEvent> {

  private static final String MANAGER_ROLE = "responsable";

  @Inject
  private ResourcesManagersSynchronizer synchronizer;

  @Override
  public void onDeletion(UserRoleEvent event) {
    if (event.getRole().equals(MANAGER_ROLE)) {
      Set<String> userIds = event.getUserIds();
      event.getInstanceIds().forEach(a -> synchronizer.synchronize(a, userIds));
    }
  }
}

Mis à jour par Miguel Moquillon il y a environ un mois

Intégré dans la branche master

Mis à jour par Miguel Moquillon il y a environ un mois

  • Statut changé de Resolved à Closed
Actions

Formats disponibles : Atom PDF