ESUPSGC

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.

...

La première partie du fichier comporte les « UserInfoService » ainsi que les « SpelUserInfoService » . Ces deux entités ont pour but de peupler les informations des demandeurs de carte à l’aide des différentes sources de données présentent dans le SI de l'établissement (ou dans les SI des établissements partneaires - cas d'une authentification shibboleth extérieure, ou encore de l'usage d'un 'meta-annuaire' multi-établissements).

Trois methodes 5 méthodes sont implémentées dans le SGC ESUP-SGC :

Les spelUserInfoService sont des règles qui s’appliquent ensuite pour calculer certains attributs de l’utilisateur.

...

On note que l'usage de shibboleth permet de récupérer des informations sur un individu extérieur au SI sans connexion directe d'Esup-SGC au SI de cet individu. Le fonctionnement de shibboleth fait cependant que ces informations ne pourront pas être mises à jour régulièrement sans connexion régulière de l'individu au SGC. Aussi la récupération des informations également depuis le LDAP au moins pour les utilisateurs internes au SI est à implémenter (en place ou même en plus de shibboleth).

Les requêtes se font par défaut en utilisant l'eppn (eduPersonPrincipalName) en clef ; depuis la version 3.2.0, il est possible également de faire une requête en utilisant un champ préalablement récupéré depuis une autre source.

On peut par exemple récupérer via ldap la majorité des champs en utilisant le searchFilter par défaut (eduPersonPrincipalName={eppn}), dont supannEtuId par exemple - puis utiliser ce supannEtuId dans un "userinfoservice" de type RestUserInfoService implémentant l'appel à l'API Pegase par exemple, comme illustré dans les commentaires du fichier applicationContext-services.xml
https://github.com/EsupPortail/esup-sgc/commit/383b95e3feb894814c46ddeedb5515d79f0b89b8

→ Merci de consulter https://github.com/EsupPortail/esup-sgc/blob/master/src/main/resources/META-INF/spring/applicationContext-services.xml qui donne quelques exemples des possibilités de récupération de champs utilisateur via ces différents "UserInfoService".

→ Merci également de consulter la page Exemples de UserInfoServices


supannRefId4ExternalCard

Nom du champ esup-sgcUsageObligatoire Source à 'privilégier' / Format
eppn Identifiant métier : eduPersonPrincipalNameOuieduPersonPrincipalName, identifiant métier dans esup-sgc, permet par défaut de faire le lien -> shib, ldap et sql
email
Nom du champ esup-sgcUsageObligatoire Source à 'privilégier' / Format
eppn Identifiant métier : eduPersonPrincipalNameOuieduPersonPrincipalName - obligatoire dans toutes les sources - car permet de faire le lien -> shib, ldap et sql
email Envoi d’email d’information lors de l’évolution de la carte ; ticket paybox, ... et aussi pour crous/izly
→ obligatoire

Oui

shib/ldap - champ mail
eduPersonPrimaryAffiliationCatégorisation population – moteur de recherche Nonshib/ldap - champ eduPersonPrimaryAffiliation
supannEtuId moteur de recherche Nonshib/ldap - champ supannEtuId
supannEmpIdmoteur de rechercheNonshib/ldap - champ supannEmpId
supannCodeINE

affichage / construction identifiant ESCR / identfiant crous/izly pour les étudiants

→ obligatoire dans CROUS/IZLY et ESCR

Ouishib/ldap - champ supannCodeINE
supannEntiteAffectationPrincipalemoteur de rechercheNonshib/ldap - champ supannEntiteAffectationPrincipale
firstnameAffichage / moteur de rechercheOuishib/ldap - champ givenname
nameAffichage / moteur de rechercheOuishib/ldap - champ sn
schacDateOfBirth

Date de naissance - obligatoire dans les contrôles d’accès.
Format :  yyyyMMdd  

Ouishib/ldap - champ schacDateOfBirth
schacExpiryDate

Date de fin de droits – les cartes de l’individu sont marquées comme caduques cette date passée. Format UTC :  yyyyMMddHHmmss'Z'

Cette date est également envoyée aux services qui ont besoin d'une date de fin (expiration) telles que les contrôles d'accès, ESCR, le CROUS (dueDate).Envoi d’email d’information lors de l’évolution de la carte ; ticket paybox, ... et aussi pour crous/izly
→ obligatoire

Oui

shib/ldap - champ schacExpiryDate
referenceStatutPopulation crous (psg, etd, prs, hbg, fct, fpa, stg) - permet de calculer le tarif et société crous depuis le fichier ESIST.xmlOui sql
indiceIndice du personnel - permet de calculer le tarif et société crous depuis le fichier ESIST.xmlNon sql
secondaryIdIdentifiant secondaire quelconque – affichage / moteur de recherche / web service
spécificité COMUE NU : doit correspondre au leocode
Non ...
instituteÉtablissement, affichage ...Nonrègle d'un spelUserInfoService : nom (libellé) de l'établissement
mail
eduPersonPrimaryAffiliationCatégorisation population – moteur de recherche Nonshib/ldap - champ eduPersonPrimaryAffiliation
supannEtuId moteur de recherche Nonshib/ldap - champ supannEtuId
supannEmpIdmoteur de rechercheNonshib/ldap - champ supannEmpId
supannCodeINE

affichage / construction identifiant ESCR / identfiant crous/izly pour les étudiants

→ obligatoire dans CROUS/IZLY et ESCR

supannEtablissement

Code RNE Établissement - permet de calculer le tarif et société crous depuis le fichier ESIST.xml

Depuis la 1.1.1, ce code RNE ainsi récupéré est envoyé dans l'API CROUS en tant que rneOrgCode

Ouishib/ldap - champ supannEtablissement code UAI / RNE :
"{UAI}0761904G" pour désigner l'université de Rouen supannCodeINE
supannEntiteAffectationPrincipalemoteur de rechercheNonshib/ldap - champ supannEntiteAffectationPrincipale
firstnameaddressAffichage / moteur de rechercheEst affiché par défault dans le champ "Courrier Interne" dans le bloc "Adresse" du formulaire de demande de carte.Nonpeut correspondre à supannEntiteAffectationPrincipale ou champs sql spécifiqueexternalAddressOuishib/ldap - champ givenname
nameAffichage / moteur de recherche
Est affiché par défault dans le champ "Domicile" dans le bloc "Adresse" du formulaire de demande de carte.
Non
recto1Libellé sur rectoNonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
recto2Libellé sur rectoNonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
recto3Libellé sur rectoNonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
recto4Libellé sur rectoNonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
recto5Libellé sur rectoNonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
verso1Libellé sur verso (dématérialisé)Nonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
verso2Libellé sur verso (dématérialisé)Nonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
verso3Libellé sur verso (dématérialisé)Nonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
verso4Libellé sur verso (dématérialisé)Nonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
verso5Libellé sur verso (dématérialisé)Nonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
freeField1Champ libre - peut servir à la recherche/affichageNonlibre
freeField2Champ libre - peut servir à la recherche/affichageNonlibre
freeField3Champ libre - peut servir à la recherche/affichageNonlibre
supannRefId donnant des numéros de cartes 'externes', cad non issus du SGC (et donc issus d'un autre SGC)
Déprécié : merci d'utiliser csn4ExternalCard et control4ExternalCard
Non

shib/ldap - champ supannRefId - atend en dur
{ISO15693}le-numero-csn
{LEOCARTE:ACCESS-CONTROL}le-numero-access-control

csn4ExternalCardcsn des cartes 'externes', cad non issus du SGC (et donc issus d'un autre SGC)Nonle-numero-csn (on pourra utiliser le champ supannRefId pour le faire transiter)
access-control4ExternalCardnuméro de carte de contrôle d'accès des cartes 'externes', cad non issus du SGC (et donc issus d'un autre SGC)Nonle-numero-access-control (on pourra utiliser le champ supannRefId pour le faire transiter)
jpegPhoto4ExternalCardjpegPhoto donnant la photo de cartes 'externes', cad non issus du SGC (et donc issus d'un autre SGC)Non

shib/ldap - champ jpegPhoto

sql : jpegPhoto correspondant à une photo jpeg exportée en base64

jpegPhotojpegPhoto donnant la photo par défaut pour un utilisateur : c'est cette photo qui est proposée par défaut lors de la première demande de carte ou via la demande de carte via l'API REST (sans spécifier une photo spécifique)Non

shib/ldap - champ jpegPhoto

sql : jpegPhoto correspondant à une photo jpeg exportée en base64

userType

affichage : onglet par userType
gestionnaire par userType
spécificité COMUE NU : ComueNuAccessControlCardIdService calcule un identifiant de carte à destination
d'une application desfire pour contrôle d'accès en fonction de userType (P, E ou I).

Oui

règle d'un spelUserInfoService

Attention, le nombre maximal de caractères du userType est limité à 3 ; les libellés à donner dans les messages i18n sont libres quand à eux ; 
vous pouvez modifier/ajouter ces libellés dans src/main/webapp/WEB-INF/i18n/sgc-messages.properties

templatethème (template) de carte à utiliserOuirègle d'un spelUserInfoService - doit correspondre à une clef de template
editabletrue ou false selon que l'utilisateur est 'éditable ou non'Non

remplace l'usage de ROLE_USER_NO_EDITABLE (qui en tant que 'groupe' doit forcément correspondre à un groupe/champ ldap)
si utilisé, il vous faut supprimer la référence à ROLE_USER_NO_EDITABLE dans sgcMappingGroupesRoles (et inversement)

requestFreetrue ou false selon que l'utilisateur doit payer le renouvellement de la carteNonremplace l'usage de ROLE_USER_RENEWAL_PAYED (qui en tant que 'groupe' doit forcément correspondre à un groupe/champ ldap)
si utilisé, il vous faut supprimer la référence à ROLE_USER_RENEWAL_PAYED dans sgcMappingGroupesRoles (et inversement)
blockUserMsg

Texte HTML affiché à l'utilisateur (vue utilisateur) en lieu et place du formulaire de demande de carte. Si vide (ou non spécifié dans la configuration), le formulaire de demande eest inchangé simplement.

Non

règle d'un spelUserInfoService - peut permettre de personnaliser le message disant à l'utilisateur qu'il ne peut pas demander de carte actuellement via eusp-sgc (car son inscription n'est pas en règle par exemple).

synchronize

Champ permettant d'indiquer que l'utilisateur (et ses cartes) doit être synchronisé depuis les userInfoServices.
synchronize est à 'true' par défaut (fonctionnement usuel), si celui-ci est donné à false l'utilisateur et ses cartes restent figées dans esup-sgc : celà permet par exemple de conserver les anciennes cartes d'utilisateurs plus remontés par le SI (ldap/bd). A noter que même si synchronize est à false, le changement d'état de la carte en caduque en fonction de la date de fin enregistrée en base (schacExpiryDate) s'opère et provoque alors à cette date une mise à jour des informations utilisateurs/cartes sur les services tels que le contrôle d'accè, l'API CROUS, le LDAP ...

Nonrègle d'un spelUserInfoService - dans la configuration donnée par défaut, on met synchronize à 'false' pour les utilisateurs n'ayant plus d'adresses mail de renseignées dans le Système d'Information (ldap/bd).
academicLevelChamp academicLevel permettant de transmettre le niveau d'étude de l'étudiant (en cours) à l'API ESCR (carte étudiante européenne).
Ce niveau, si transmis, est notamment affiché derrière l'url correrspondant au qrcode de la carte étudiante européenne (page internet précisant si l'individu est effectivement étudiant ).
Non

Cf la doc de l'API ESCR :
Current academic level of the student.
Possibles values are :
6 - bachelor’s degree.
7 - master’s degree.
8 - doctorate.

picChamp pic utilisé pour générer l'ESCN en utilisant un pic spécifique à l'étudiant ciblé en lieu et place du pic donné par défaut dans la configuration du bean escUidFactoryService de applicationContext-crous.xml ; utile pour un esup-sgc servant plusieurs établissements et relié à ESCR.Non

Note supplémentaire sur le editable (et requestFree qui se comporte de la même manière) : après avoir utilisé un temps le userInfo editable (ou requestFree) et que vous voulez finalement revenir à l'usage de ROLE_USER_NO_EDITABLE (ou ROLE_USER_RENEWAL_PAYED),
il vous faut également supprimer les références au groupe ROLE_USER_NO_EDITABLE (ou ROLE_USER_RENEWAL_PAYED) et remettre les editable à true (ou request_free à true) dans la base esupsgc pour réinitialiser les caculs : 
delete from roles where role='ROLE_USER_NO_EDITABLE';
update user_account set editable = true;
ou
delete from roles where role='ROLE_USER_RENEWAL_PAYED';

update user_account set request_free = true;

caducIfEmpty

Si vous souhaitez rendre caduques les cartes des utilisateurs qui ne sont plus remontés par le SI (ou qui n'ont plus le droit d'avoir de carte selon des règles internes, comme l'appartenance à un groupe ldap) alors même que la date de fin (schacExpiryDate dans esup-sgc) qui a été récupérée lorsque celle-ci était encore disponible reste postérieure à la date du jour, l'utilisation de caducIfEmpty peut être utile.

Dans applicationContext-services.xml vous pouvez mettre :

Bloc de code
languagexml
themeRDark
<bean id="userInfoService" class="org.esupportail.sgc.services.userinfos.UserInfoService">
  <property name="caducIfEmpty" value="caducIfEmpty"/>
</bean>

Par défaut la propriété caducIfEmpty étant valuée à ""

Vous pouvez alors manipuler un champ caducIfEmpty ainsi par exemple : 

Ouishib/ldap - champ sn
schacDateOfBirth

Date de naissance - obligatoire dans les contrôles d’accès.
Format :  yyyyMMdd  

Ouishib/ldap - champ schacDateOfBirth
alternative à supannOIDCDateDeNaissance
supannOIDCDateDeNaissance

Date de naissance - obligatoire dans les contrôles d’accès.
Format :  yyyy-MM-dd  

Oui

shib/ldap - champ supannOIDCDateDeNaissance 
alternative à schacDateOfBirth

schacExpiryDate

Date de fin de droits – les cartes de l’individu sont marquées comme caduques cette date passée. Format UTC :  yyyyMMddHHmmss'Z'

Cette date est également envoyée aux services qui ont besoin d'une date de fin (expiration) telles que les contrôles d'accès, ESCR, le CROUS (dueDate).

Ouishib/ldap - champ schacExpiryDate
referenceStatutPopulation crous (psg, etd, prs, hbg, fct, fpa, stg) - permet de calculer le tarif et société crous depuis le fichier ESIST.xmlOui sql
indiceIndice du personnel - permet de calculer le tarif et société crous depuis le fichier ESIST.xmlNon sql
secondaryIdIdentifiant secondaire quelconque – affichage / moteur de recherche / web service
spécificité COMUE NU : doit correspondre au leocode
Non ...
instituteÉtablissement, affichage ...Nonrègle d'un spelUserInfoService : nom (libellé) de l'établissement
supannEtablissement

Code RNE Établissement - permet de calculer le tarif et société crous depuis le fichier ESIST.xml

Depuis la 1.1.1, ce code RNE ainsi récupéré est envoyé dans l'API CROUS en tant que rneOrgCode

Oui

shib/ldap - champ supannEtablissement code UAI / RNE :
"{UAI}0761904G" pour désigner l'université de Rouen

address

Affichage / moteur de recherche
Est affiché par défault dans le champ "Courrier Interne" dans le bloc "Adresse" du formulaire de demande de carte.

Nonpeut correspondre à supannEntiteAffectationPrincipale ou champs sql spécifique
externalAddress

Affichage / moteur de recherche
Est affiché par défault dans le champ "Domicile" dans le bloc "Adresse" du formulaire de demande de carte.

Non
recto1Libellé sur rectoNonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
recto2Libellé sur rectoNonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
recto3Libellé sur rectoNonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
recto4Libellé sur rectoNonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
recto5Libellé sur rectoNonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
verso1Libellé sur verso (dématérialisé)Nonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
verso2Libellé sur verso (dématérialisé)Nonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
verso3Libellé sur verso (dématérialisé)Nonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
verso4Libellé sur verso (dématérialisé)Nonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
verso5Libellé sur verso (dématérialisé)Nonldap, sql, ou/et calculé via des règles d'un spelUserInfoService
freeField1Champ libre - peut servir à la recherche/affichageNonlibre
freeField2Champ libre - peut servir à la recherche/affichageNonlibre
freeField3Champ libre - peut servir à la recherche/affichageNonlibre

supannRefId4ExternalCard


supannRefId donnant des numéros de cartes 'externes', cad non issus du SGC (et donc issus d'un autre SGC)
Déprécié : merci d'utiliser csn4ExternalCard et control4ExternalCard
Non

shib/ldap - champ supannRefId - atend en dur
{ISO15693}le-numero-csn
{LEOCARTE:ACCESS-CONTROL}le-numero-access-control

csn4ExternalCardcsn des cartes 'externes', cad non issus du SGC (et donc issus d'un autre SGC)Nonle-numero-csn (on pourra utiliser le champ supannRefId pour le faire transiter)
access-control4ExternalCardnuméro de carte de contrôle d'accès des cartes 'externes', cad non issus du SGC (et donc issus d'un autre SGC)Nonle-numero-access-control (on pourra utiliser le champ supannRefId pour le faire transiter)
jpegPhoto4ExternalCardjpegPhoto donnant la photo de cartes 'externes', cad non issus du SGC (et donc issus d'un autre SGC)Non

shib/ldap - champ jpegPhoto

sql : jpegPhoto correspondant à une photo jpeg exportée en base64

jpegPhoto

jpegPhoto donnant la photo par défaut pour un utilisateur : c'est cette photo qui est proposée par défaut lors de la première demande de carte ou via la demande de carte via l'API REST (sans spécifier une photo spécifique)

À noter que les mécansimes utilisés dans esup-sgc pour intégrer et manipuler la photo de l'utilisateur reposent sur l'usage et capacité des navigateurs, cela permet d'être très tolérent vis-à-vis du format d'image une jpegPhoto peut en fait correspondre à un png plutôt qu'un jpg par exemple.

Non

shib/ldap - champ jpegPhoto

sql : jpegPhoto correspondant à une photo jpeg exportée en base64

API REST (par exemple Pégase) : jpegPhoto correspondant à une image en byte array (fichier), un png comme un jpg est supporté.

userType

affichage : onglet par userType
gestionnaire par userType
spécificité COMUE NU : ComueNuAccessControlCardIdService calcule un identifiant de carte à destination
d'une application desfire pour contrôle d'accès en fonction de userType (P, E ou I).

Oui

règle d'un spelUserInfoService

Attention, le nombre maximal de caractères du userType est limité à 3 ; les libellés à donner dans les messages i18n sont libres quand à eux ; 
vous pouvez modifier/ajouter ces libellés dans src/main/webapp/WEB-INF/i18n/sgc-messages.properties

templatethème (template) de carte à utiliserOuirègle d'un spelUserInfoService - doit correspondre à une clef de template
editabletrue ou false selon que l'utilisateur est 'éditable ou non'Non

remplace l'usage de ROLE_USER_NO_EDITABLE (qui en tant que 'groupe' doit forcément correspondre à un groupe/champ ldap)
si utilisé, il vous faut supprimer la référence à ROLE_USER_NO_EDITABLE dans sgcMappingGroupesRoles (et inversement)

requestFreetrue ou false selon que l'utilisateur doit payer le renouvellement de la carteNonremplace l'usage de ROLE_USER_RENEWAL_PAYED (qui en tant que 'groupe' doit forcément correspondre à un groupe/champ ldap)
si utilisé, il vous faut supprimer la référence à ROLE_USER_RENEWAL_PAYED dans sgcMappingGroupesRoles (et inversement)
firstRequestFreetrue ou false selon que l'utilisateur doit payer la première demande de carteNonremplace l'usage de ROLE_USER_NEW_PAYED (qui en tant que 'groupe' doit forcément correspondre à un groupe/champ ldap)
si utilisé, il vous faut supprimer la référence à ROLE_USER_NEW_PAYED dans sgcMappingGroupesRoles (et inversement)
blockUserMsg

Texte HTML affiché à l'utilisateur (vue utilisateur) en lieu et place du formulaire de demande de carte. Si vide (ou non spécifié dans la configuration), le formulaire de demande eest inchangé simplement.

Non

règle d'un spelUserInfoService - peut permettre de personnaliser le message disant à l'utilisateur qu'il ne peut pas demander de carte actuellement via eusp-sgc (car son inscription n'est pas en règle par exemple).

synchronize

Champ permettant d'indiquer que l'utilisateur (et ses cartes) doit être synchronisé depuis les userInfoServices.
synchronize est à 'true' par défaut (fonctionnement usuel), si celui-ci est donné à false l'utilisateur et ses cartes restent figées dans esup-sgc : celà permet par exemple de conserver les anciennes cartes d'utilisateurs plus remontés par le SI (ldap/bd). A noter que même si synchronize est à false, le changement d'état de la carte en caduque en fonction de la date de fin enregistrée en base (schacExpiryDate) s'opère et provoque alors à cette date une mise à jour des informations utilisateurs/cartes sur les services tels que le contrôle d'accè, l'API CROUS, le LDAP ...

Nonrègle d'un spelUserInfoService - dans la configuration donnée par défaut, on met synchronize à 'false' pour les utilisateurs n'ayant plus d'adresses mail de renseignées dans le Système d'Information (ldap/bd).
academicLevelChamp academicLevel permettant de transmettre le niveau d'étude de l'étudiant (en cours) à l'API ESCR (carte étudiante européenne).
Ce niveau, si transmis, est notamment affiché derrière l'url correrspondant au qrcode de la carte étudiante européenne (page internet précisant si l'individu est effectivement étudiant ).
Non

Cf la doc de l'API ESCR :
Current academic level of the student.
Possibles values are :
6 - bachelor’s degree.
7 - master’s degree.
8 - doctorate.

picChamp pic utilisé pour générer l'ESCN en utilisant un pic spécifique à l'étudiant ciblé en lieu et place du pic donné par défaut dans la configuration du bean escUidFactoryService de applicationContext-crous.xml ; utile pour un esup-sgc servant plusieurs établissements et relié à ESCR.Non


Note supplémentaire sur le editable (et requestFree qui se comporte de la même manière) : après avoir utilisé un temps le userInfo editable (ou requestFree) et que vous voulez finalement revenir à l'usage de ROLE_USER_NO_EDITABLE (ou ROLE_USER_RENEWAL_PAYED),
il vous faut également supprimer les références au groupe ROLE_USER_NO_EDITABLE (ou ROLE_USER_RENEWAL_PAYED) et remettre les editable à true (ou request_free à true) dans la base esupsgc pour réinitialiser les caculs : 
delete from roles where role='ROLE_USER_NO_EDITABLE';
update user_account set editable = true;
ou
delete from roles where role='ROLE_USER_RENEWAL_PAYED';

update user_account set request_free = true;

caducIfEmpty

Si vous souhaitez rendre caduques les cartes des utilisateurs qui ne sont plus remontés par le SI (ou qui n'ont plus le droit d'avoir de carte selon des règles internes, comme l'appartenance à un groupe ldap) alors même que la date de fin (schacExpiryDate dans esup-sgc) qui a été récupérée lorsque celle-ci était encore disponible reste postérieure à la date du jour, l'utilisation de caducIfEmpty peut être utile.

Dans applicationContext-services.xml vous pouvez mettre :

Bloc de code
languagexml
themeRDark
<bean id="userInfoService" class="org.esupportail.sgc.services.userinfos.UserInfoService">
  <property name="caducIfEmpty" value="caducIfEmpty"/>
</bean>

Par défaut la propriété caducIfEmpty étant valuée à ""

Vous pouvez alors manipuler un champ caducIfEmpty ainsi par exemple : 

Bloc de code
languagexml
themeRDark
<bean id="NoCaduc4All" class="org.esupportail.sgc.services.userinfos.SpelUserInfoService" p:order="5">
  <property name="sgcParam2spelExp">
    <map>
      <entry key="caducIfEmpty" value="'Carte-OK'"/>
    </map>
  </property>
</bean>

<bean id="caducIfNoResourceLeocarte" class="org.esupportail.sgc.services.userinfos.SpelUserInfoService" p:order="6">
  <property name="eppnFilter" value=".*@univ-ville\.fr"/>
  <property name="sgcParam2spelExp">
    <map>
      <entry key="caducIfEmpty" value="#userInfosInComputing['memberOf']!=null and #userInfosInComputing['memberOf'].contains('cn=from.si.ressources.carte,ou=groups,dc=univ-ville,dc=fr'))) ? 'Carte-OK' : ''"/>
    </map>
  </property>
</bean>


Avec une telle configuration, les utilisateurs univ-ville verront leurs cartes devenir caduques si le  memberOf (groupes de l'utilisateur) récupéré depuis le SI ne contient pas cn=from.si.ressources.carte,ou=groups,dc=univ-ville,dc=fr

memberOf étant lui-même récupéré via ldap en l'ajoutant dans les attributs ldap à récupérer

Bloc de code
languagexml
themeRDark
<bean id="ldapUserInfoService" class="org.esupportail.sgc.services.userinfos.LdapUserInfoService" p:order="2">
  <property name="eppnFilter" value=".*@univ-ville\.fr"/>
  <property name="ldapTemplate" ref="ldapTemplate"/>
  <property name="sgcParam2ldapAttr">
    <map>
      ....
      <entry key="memberOf" value="memberOf"/>
    </map>
  </property>
</bean>

groupService :

Permet de récupérer ou constituer des groupes qui seront utiliser pour donner des rôles aux utilisateurs.

Par défaut, esup-sgc propose de récupérer les groupes du ldap de type groupOfNames, groupes usuels dans un annuaire de type supann.

On trouve ainsi la définition du bean comme ceci : 

Bloc de code
languagexml
	<bean id="groupService" class="org.esupportail.sgc.services.ldap.LdapGroupService">
		<property name="ldapTemplate" ref="ldapTemplate"/>
		<property name="groupSearchBase" value="ou=groups" />
		<property name="groupSearchFilter" value="member={0}"/>
		<property name="memberSearchBase" value="ou=people"/>
		<property name="memberSearchFilter" value="memberOf={0}"/>
	</bean>

Cette configuration données ci-dessus présuppose que les membres d'un groupe soient référencés dans le groupe mais aussi que les groupes d'un utilisateur soient référencés dans l'entrée ldap de l'utilisateur ; pour ce deuxième point cela se fait usuellement via l'overlay memberOf dans openldap.

Plutôt que d'utiliser cette possibilité de memberOf, esup-sgc peut se baser uniquement sur les groupes, pour ce faire il doit alors pouvoir retrouver l'eppn de chaque utilisateur par construction depuis les attributs de membre des groupes (qui correspondent aux dn des utilisateurs pour les groupOfNames) ; cette implémentation est normalement plus efficace que l'usage de l'overlay memberOf.
Voici un exemple d'une telle configuration: 

Bloc de code
languagexml
	<bean id="groupService" class="org.esupportail.sgc.services.ldap.LdapGroupBaseService">
		<property name="ldapTemplate" ref="ldapTemplate"/>
		<property name="groupSearchBase" value="ou=groups" />
		<property name="groupSearchFilter" value="member={0}"/>
		<property name="memberSearchFilter" value="dn={0}"/>
		<property name="memberAttr" value="member"/>
		<property name="memberAttr2EppnRegexp" value="uid=(.*),ou=people,dc=univ-ville,dc=fr"/>
		<property name="memberAttr2EppnRegexpValue" value="$1@univ-ville.fr"/>
		<property name="groupName2BaseRegexp" value="(.*),dc=univ-ville,dc=fr"/>
		<property name="groupName2BaseRegexpValue" value="$1"/>
	</bean>

Il est possible également de calculer ces groupes via des filtres ldap : 

Bloc de code
languagexml
	<bean id="groupService
Bloc de code
languagexml
themeRDark
<bean id="NoCaduc4All" class="org.esupportail.sgc.services.userinfos.SpelUserInfoService" p:order="5">
  ldap.LdapFilterGroupService">
		<property name="ldapTemplate" ref="ldapTemplate"/>
		<property name="sgcParam2spelExpldapFiltersGroups">
			<map>
				<entry    <map>
      key="supannEntiteAffecation=DSI" value="app-sgc-admins"/>
				<entry key="caducIfEmptyeduPersonAffiliation=student" value="'Carte-OK'app-sgc-students"/>
            </map>
  		</property>
	</bean>


Ou encore via des règles définis en SpEl (Spring Expression Language) :

Bloc de code
languagexml
	<bean id="caducIfNoResourceLeocartegroupService" class="org.esupportail.sgc.services.userinfosldap.SpelUserInfoServiceSpelGroupService" p:order>
		<property name="6groups4eppnSpel">
			<map>
				<entry  <property name="eppnFilter" value=".*@univ-ville\.frkey="app-sgc-admins" value="#user.supannEntiteAffectationPrincipale matches '.*DSI.*'"/>
    <property name="sgcParam2spelExp">
    <map>
                  <entry key="caducIfEmptyapp-sgc-all" value="#userInfosInComputing['memberOf']!=null and #userInfosInComputing['memberOf'].contains('cn=from.si.ressources.carte,ou=groups,dc=univ-ville,dc=fr'))) ? 'Carte-OK' : ''true"/>
    			</map>
  		</property>
	</bean>

Avec une telle configuration, les utilisateurs univ-ville verront leurs cartes devenir caduques si le  memberOf (groupes de l'utilisateur) récupéré depuis le SI ne contient pas cn=from.si.ressources.carte,ou=groups,dc=univ-ville,dc=fr


memberOf étant lui-même récupéré via ldap en l'ajoutant dans les attributs ldap à récupérerEt on peut enfin constituer un groupService qui calculera les groupes via autant de groupService intermédiaires qu'on le souhaite.
Cela peut permettre d'utiliser plusieurs ldap, des groupes ldap et des filtres ldap, des règles pour certains groupes, etc.
Exemple :

Bloc de code
languagexml
themeRDark
	<bean id="ldapUserInfoServicegroupService" class="org.esupportail.sgc.services.userinfosldap.LdapUserInfoService" p:order="2">
  MultiGroupService">
		<property name="eppnFilter" value=".*@univ-ville\.fr"/>
  <property name="ldapTemplate" ref="ldapTemplate"/>
  <property name="sgcParam2ldapAttr">
    <map>
      ....
      <entry key="memberOf" value="memberOf"/>
    </map>
  </property>
</bean>groupServices">
			<list>
				<ref bean="ldapGroupService"/>
				<ref bean="spelGroupService"/>
			</list>
		</property>
	</bean>

Où  ldapGroupService et spelGroupService seront eux-mêmes définis via des configurations comme présentées ci-dessus (en valuant id par ldapGroupService et spelGroupService en lieu et place de groupService).

cardIdsService :

Permet de configurer la génération d'identifiants qui pourront être codés dans la carte par esup-nfc-tag :

...

Bloc de code
languagexml
themeRDark
<bean id="apiCrousService" class="org.esupportail.sgc.services.crous.ApiCrousService">
 <property name="enable" value="false"/>
 <property name="webUrl" value="https://api-pp.nuonet.fr" />
 <property name="clientId" value=""/>
 <property name="clientSecret" value=""/>
 <property name="accessUrl" value="https://acces-pp.lescrousnuonet.fr"/>
 <property name="restTemplate" ref="restTemplate" />
</bean>

...

  1. se rendre sur https://dev-pp.lescrous.fr afin de vous créer une application et demander la souscription à l'API Beforeizly.
  2. une fois vos tests validés, vous pouvez vous connecter avec le même utilisateur sur https://dev.lescrous.fr et faire la même démarche pour obtenir vos identifiants de production.
  3. clientId et clientSecret doivent être informés en fonction.

  4. accessUrl doit rester accessUrl doit être renseigné à https://acces-pp.nuonet.fr pour la préproduction et https://acces.lescrous.fr pour  pour la pre- production comme la production.
  5.  webUrl webUrl doit être renseigné à à https://api-pp.nuonet.fr pour la préproduction et https://api.lescrous.fr pour la production.

...