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.
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>
</group>
...
</Group-Store>