Pages enfant
  • Groupes (esup-3)

Gestion des groupes

uPortal peut utiliser plusieurs modes de gestion ou de stockage de groupes. Ces modes sont activés dans le fichier uportal-impl/src/main/resources/properties/groups/compositeGroupServices.xml

local

C'est la méthode de base : les groupes sont gérés et stockés en interne dans la base du portail. Ils peuvent être constitués d'utilisateurs ou de canaux (l'un ou l'utre pour chaque groupe).

Chaque groupe est référencé dans la table UP_GROUP

Les membres des groupes sont enregistrés dans la table UP_GROUP_MEMBERSHIP

On gère ces groupes et leurs membres avec l'interface de gestion de groupes group manager

PAGS (person attributes group store)

Avec cette méthode, on ne gère pas physiquement les groupes en base mais on évalue dynamiquement à quels groupes un utilisateur appartient lorsqu'il se connecte. Cette évaluation est faite en fonction des attributs de l'utilisateur.

Le principe est le suivant :

Les groupes PAGS sont référencés dans le fichier uportal-impl/src/main/resources/properties/groups/PAGSGroupStoreConfig.xml

Quand un utilisateur se connecte, le portail évalue, pour chaque groupe du fichier PAGSGroupStoreConfig.xml, si l'utilisateur appartient ou non à ce groupe en fonction des critères d'appartenance indiqués dans les balises selection-test et members.

  • selection-test détermine les utilisateurs directs d'un groupe
  • members détermine les sous-groupes d'un groupe

Le fichier PAGSGroupStoreConfig.xml

<Group-Store>
<group>
    <group-key>TousPers</group-key>
    <group-name>LDAP Tout le personnel</group-name>
    <group-description>Tout le personnel de l'etablissement issu de LDAP</group-description>
    <selection-test>
      <test-group>
        <test>
          <attribute-name>eduPersonAffiliation</attribute-name>
          <tester-class>org.jasig.portal.groups.pags.testers.StringEqualsIgnoreCaseTester</tester-class>
          <test-value>faculty</test-value>
        </test>
      </test-group>
      <test-group>
        <test>
          <attribute-name>eduPersonAffiliation</attribute-name>
          <tester-class>org.jasig.portal.groups.pags.testers.StringEqualsIgnoreCaseTester</tester-class>
          <test-value>staff</test-value>
        </test>
      </test-group>
      <test-group>
        <test>
          <attribute-name>eduPersonAffiliation</attribute-name>
          <tester-class>org.jasig.portal.groups.pags.testers.StringEqualsIgnoreCaseTester</tester-class>
          <test-value>employee</test-value>
        </test>
      </test-group>
      <test-group>
        <test>
          <attribute-name>eduPersonAffiliation</attribute-name>
          <tester-class>org.jasig.portal.groups.pags.testers.StringEqualsIgnoreCaseTester</tester-class>
          <test-value>researcher</test-value>
        </test>
      </test-group>
    </selection-test>
    <members>
      <member-key>Enseignants</member-key>
    </members>
  </group>
...
</Group-Store>

Group

Identifiant du groupe

selection-test

Contient l'ensemble des tests à effectuer pour évaluer l'appartenance d'un utilisateur à ce groupe en fonction de ses attributs. L'utilisateur qui répond aux tests de selection-test est appelé "membre direct" d'un groupe (memberOf)

test-group

Regroupe des test d'appartenance : tous les tests dans la même balise test-group sont ET-ifiés (associés avec un ET logique) : ils doivent être tous validés pour que le test retourne VRAI

S'il y a plusieurs test-group, ils sont OU-ifiés (associés avec un OU logique)

test
  • attribute-name : L'attribut uPortal testé
  • tester-class : La classe java utilisée comme opérateur pour le test.
  • test-value : La valeur comparée à l'attribut

Les classes utilisables sont :

IntegerEQTester

attribute-name et test-value sont convertis en ints. attribute-name doit être égal à test-value.

IntegerGETester

attribute-name supérieur ou égal à test-value.

IntegerGTTester

attribute-name supérieur à test-value.

IntegerLETester

attribute-name inférieur ou égal à test-value.

IntegerLTTester

attribute-name inférieur à test-value.

RegexTester

attribute-name doit correspondre à l'expression régulière indiquée dans test-value.

StringEqualsIgnoreCaseTester

Comparaison de chaînes en ignorant la casse.

StringEqualsTester

Comparaison de chaînes.

ValueExistsTester

VRAI si attribute-name possède une valeur.

ValueMissingTester

VRAI si  attribute-name est nul ou qu'aucune de ses valeurs n'est égale à test-value.

PS : les valeurs d'un attribut multi-valué sont testées successivement ; il suffit que une de ses valeurs réponde au test pour qu'il soit VRAI

members

Indique, dans les balises member-key, les sous-groupes de ce groupe. Un utilisateur qui appartient à l'un de ces sous-groupes est appelé "membre indirect" d'un groupe (deepMemberOf).

Avantages

L'évaluation est faite à la connexion, utilisateur par utilisateur => la taille des groupes n'influe pas sur les performances

Inconvénients

On ne peut pas afficher la liste des utilisateurs membres d'un groupe

Références

http://www.ja-sig.org/wiki/display/GAP/uPortal+PAGS+documentation

  • Aucune étiquette