Groupe 1A (socle)

Date de création : 07 juillet 2004
Dernière modification :
Diffusion : Nancy 2

MAG : un framework de conception des channels

Plugin RestritedAction

Ce plugin permet de restreindre l'accès d'une action à un groupe uPortal.

Il faut dans le fichier de configuration du canal déclarer les groupes que l'on veux filtrer dans le canal. Chaque groupe uPortal, repéré par son identifiant est associé à un nom logique utilisable dans le canal.

<groupmapping>
  <group localname="PERS" uportalid="local.1"/>
  <group localname="ETUD" uportalid="local.2"/>
</groupmapping>

Dans les actions, il faut positionner le paramètre : "plug.esup.restrictedAction", et lui mettre comme valeur la ou les noms logiques des groupes autorisés à acceder à l'action.

<param name="plug.esup.restrictedAction">
  <value>PERS</value>
</param>

Au niveau java, dans la méthode init() de la SubChannel, il faut faire appel au plugin :

if (!RestrictedAction.filterAccess(mainChannel,mainChannel.getCurrentAction().getName(),Config.getInstance().getGroupmapping())){
  Message.message(mainChannel, runtimeData, "Vous n'êtes pas autorisé à accéder à cette page.","default");
  return Boolean.FALSE;
}

La méthode init() Renverra false et donnera la main au plugin Message si la personne connectée n'est pas dans le groupe déclaré sur l'action (dans l'exemple si elle ne fait pas partie du groupe PERS soit local.1).

Lorsqu'aucun groupe n'est définit, c'est au niveau de l'appel du pluggin que choisit le comportement. La méthode filterAccess peut prendre, comme dans l'exemple, 2 paramètres :

Mais on peut envoyer un troisième paramètre, un boolean, pour autoriser (ou non) l'accès si aucun groupe n'est spécifié. La valeur par défaut de ce boolean est "true", donc on autorise l'accès lorsqu'aucun groupe n'est précisé.

Remarque : La recherche d'appartenance d'une personne à un des groupes déclarés s'effectue une seule fois. Alors la variable "plug.esup.restrictedAction" dans les staticData est valuée du nom logique du groupe reconnu. Donc les fois suivantes, le plugin va se contenter de vérifier que le groupe reconnu a bien accès à l'action en cours.