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.
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>
Group
Identifiant du groupe
selection-test
Contient l'ensemble des tests à effectuer pour évaluer l'appartenance d'un utilisateur à ce groupe
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 renvoit 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. |