proj-esup-grouper

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

<customDir> : le répertoire des custom de eSup.

Sommaire

Etape 1 : Description

Pour faciliter l'intégration, les sources ont été packagées sous forme de jar via un projet maven et sont disponibles sur le repository du RECIA. Donc la récupération des jar sera automatique en suivant les étapes décrites après.

...

Etape 2 : Intégration au portail Esup 3.2.4

...

La compilation

  • Ajout d'un repository
    Bloc de code
    cp <esupSrc>/uPortal_rel-3.2.4/pom.xml <customDir>/uPortal/

...

ajouter les lignes suivantes dans la liste des dependencies, juste avant le commentaire <!-- esup dependencies -->

Bloc de code
<!-- esco dependencies -->
    <dependency>
      <groupId>org.esco.grouper</groupId>
      <artifactId>esco-grouper-portal-groupManager</artifactId>
      <version>0.0.3-grouper-1.6.3</version>
      <exclusions>
        <exclusion>
           <groupId>org.springframework</groupId>
           <artifactId>spring</artifactId>
        </exclusion>
        <exclusion>
           <groupId>net.sf.ehcache</groupId>
           <artifactId>ehcache</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
        <groupId>edu.internet2.middleware.subject.provider</groupId>
        <artifactId>ldap-source-adapter</artifactId>
        <version>0.0.3-grouper-1.6.3</version>
        <exclusions>
        <exclusion>
           <groupId>org.springframework</groupId>
           <artifactId>spring</artifactId>
        </exclusion>
        <exclusion>
           <groupId>net.sf.ehcache</groupId>
           <artifactId>ehcache</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

...

Pour des raisons de praticité ces sources ont été intégrées sous forme de module au projet maven du groupStore ESCO.

...

Prise en compte des groupes grouper par le portail

  • Fichier à adapter
Bloc de code
cp <esupSrc>/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/groups/compositeGroupServices.xml <customDir>/uPortal/uportal-impl/src/main/resources/properties/groups/

...

Bloc de code
xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>

   <comment>
      Properties used to define how the the Grouper groups should be loaded
      in the native uPortal groups.
   </comment>

   <!-- Duration validity, in seconds, for the Grouper requests. -->
   <entry key="grouper.requests.cache.duration">25</entry>

   <!--
        Defines the grouper groups to load in uPortal groups.
        keys denote a uPortal group name and values are semicolon separated
        lists of grouper stems. The group loaded are the root groups
        in the stems.

    For instance, all groups in the stem esco:admin that are not member of another group
        are loaded in the Portal Administrator group:
    <entry key="Portal Administrators">esco:admin</entry>
    -->
    <entry key="Administrateurs Portail">esco:admin:central</entry>
    <entry key="Tout le monde">esco:Etablissements;esco:Applications</entry>
    <entry key="Proprietaires de fragment">esco:admin:esco-lo</entry>
</properties>

...

Configuration de Grouper

il est nécessaire de placer les fichiers de configuration de grouper, pour faire cela il vous faudra récupérer les fichiers suivants dans le répertoire conf de l'api-grouper (normalement sur l machine où grouper est installé):

...

côté RECIA nous avons juste modifié ces paramtères paramètres par rapport au fichier sources.xml original de grouper :

Bloc de code
xml
xml
....
<source adapterClass="edu.internet2.middleware.subject.provider.LdapSourceAdapter">
    <id>esco:ldap</id>
    <name>JNDI Source Adapter esco:ldap</name>
    <type>person</type>

    <!-- Note that most of the ldap configuration is in the properties file
         The filename can be a file in your classpath or an absolute pathname
    -->

    <init-param>
      <param-name>ldapProperties_file</param-name>
      <param-value>ldap.properties</param-value>
    </init-param>

    <init-param>
      <param-name>Multiple_Results</param-name>
      <param-value>false</param-value>
    </init-param>
....

...

Etape 3 : Adaptation des sources uPortal

Patch du gestionnaire  gestionnaire de groupes d'uPortal

Balise Wiki
L'utilisation de ":" comme séparateur dans le nommage des groupes dans Grouper pose un problème au gestionnaire groupes d' uPortal. Ce problème a déjà été reporté dans le \[Jira de uPortal\|https://issues.jasig.org/browse/UP-2994\] Bill Brown a déjà proposé un patch \[https://issues.jasig.org/secure/attachment/11917/rel-3-2-patches.patch\|https://issues.jasig.org/secure/attachment/11917/rel-3-2-patches.patch\].

...

Bloc de code
titlediff <esupSrc>/uPortal_rel-3.2.4/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/CGroupsManager.java <customDir>/uPortal/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/CGroupsManager.java
65,74c65
<        // ---------------------------------
<        // -- Modif ESCO - A. Deman 10/2008
<        // ---------------------------------
<        // Pour eviter de charger systematiquement
<        // tous les groupes.
<        // L'appell à la méthode init a été
<        // ajoutée dans les accesseurs de cette
<        // classe qui ne l'avaient pa déjà.
< 
<       //init();
---
>       init();
102,109c93
<               // ---------------------------------
<             // -- Modif ESCO - J. Gribonvald 07/2011
<             // ---------------------------------
<             // Pour eviter de charger systematiquement
<             // tous les groupes et leurs membre 
<           // sur le groupe everyone
<           // à l'accès des canaux comme le permissionManager.
<               /*Iterator allgroups = everyone.getAllMembers();
---
>             Iterator allgroups = everyone.getAllMembers();
122,126c106
<             }*/
<           // ---------------------------------
<             // -- Modif ESCO - J. Gribonvald 07/2011
<             // ---------------------------------
<           // --- Fin modif.
---
>             }
375c366
<     init();
---
>       init();
393,400c384
<        // --------------------------------
<        // Modif ESCO - A. Deman - 10/2008
<        // --------------------------------
<        // Ajout de l'appel à init()
<        // supprimé dans le constructeur.
<        init();
<        // --- Fin modif.
<     return  (String)activities.get(token);
---
>       return  (String)activities.get(token);
418,425d401
<     // --------------------------------
<       // Modif ESCO - A. Deman - 10/2008
<       // --------------------------------
<       // Ajout de l'appel à init()
<       // supprimé dans le constructeur.
<       init();
<       // --- Fin modif.
< 

Bloc de code
titlediff <esupSrc>/uPortal_rel-3.2.4/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/GroupsManagerXML.java <customDir>/uPortal/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/GroupsManagerXML.java
239,242c239
< //      ========= Modification ESCO ==============
< //      Used to handle Grouper groups.
< //      if (hasMembers) {
< //      =========================================
---
>       if (hasMembers) {
251c248
< //      } // Modification ESCO
---
>       }
Bloc de code
titlediff <esupSrc>/uPortal_rel-3.2.4/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/wrappers/GroupWrapper.java <customDir>/uPortal/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/wrappers/GroupWrapper.java
239,242c239
< //      ========= Modification ESCO ==============
< //      Used to handle Grouper groups.
< //      if (hasMembers) {
< //      =========================================
---
>       if (hasMembers) {
251c248
< //      } // Modification ESCO
---
>       }
  • Si utilisation du WS esup des groupes
Bloc de code

cp <updateSrc>/uPortal/uportal-impl/src/main/java/org/esupportail/portal/ws/groups/PortalGroups.java <customDir>/uPortal/uportal-impl/src/main/java/org/esupportail/portal/ws/groups/PortalGroups.java

éditer le fichier selon le diff suivant :

Bloc de code
titlediff <updateSrc>uPortal/uportal-impl/src/main/java/org/esupportail/portal/ws/groups/PortalGroups.java <customDir>uPortal/uportal-impl/src/main/java/org/esupportail/portal/ws/groups/PortalGroups.java

35a36
> import org.esco.portal.groups.grouper.ESCOEntityGroupImpl;
284,285c285,290
<     				// on remplit ce vecteur en remontant la hierarchie recursivement
<     				getRecurContainingGroups(egi, groups, v);
---
> 					// on remplit ce vecteur en remontant la hierarchie recursivement
> 					if (egi instanceof ESCOEntityGroupImpl) {
> 						getESCORecurContaininGroups(egi,v);
> 					} else {
> 						getRecurContainingGroups(egi, groups, v);
> 					}
364,365c369,383
<     
<     
---
>    
>  	/**
> 	* Même méthode que la précédente mais spécifique aux groupes esco.
> 	*/
>    	private void getESCORecurContaininGroups(IEntityGroup egi, Vector v) {
>     	String[] list = egi.getKey().split(":");
>         StringBuffer group = new StringBuffer();
>         for (String current : list) {
>             if (group.length()>0) {
>                 group.append(":");
>             }
>             group.append(current);
>             v.add(group.toString());
>         }
> 	}

Etape 4 : Initialisation et déploiement

...