Beans de configuration

Dans le canal CMonDossierWeb d’origine, certaines parties sont configurables par l’intermédiaire du fichier CMonDossierWeb.xml : extension des mails etudiant (@univ-nancy2.fr par exemple), utilisation du canal MailTo ou d’un lien ‘mailto :’ pour l’envoi des mail, affichage du calendrier de rentrée etc.

Toutes ces possibilités doivent être présentes dans esup-mondossierweb, c’est pourquoi nous avons créé un fichier de configuration monDossierWeb.xml placé dans properties/monDossierWeb. Ce fichier contient la définition de 2 beans utiles à l’application et configurables : ‘config’ et ‘security’. De cette manière nous n’avons par la suite qu’à injecter le bean utile dans ceux ayant besoin de leurs paramètres ou de leurs méthodes.

Nous avons bien sur du rajouter l’import :

<import resource= »monDossierWeb/monDossierWeb.xml » />

Dans le fichier properties/applicationContext.xml.

 

 

1/ Le bean ‘config’ :

Il sert simplement à stocker dans un bean les paramètres de base de l’application. Il ne propose aucune méthode (à part ses setters et getters bien sur).

<bean id= »config » class= »org.esupportail.mondossierweb.domain.beans.Config »>

<description>un bean pour stocker configuration de l’application.</description>

 

<property name= »extMail »>

<description>l’extension au login pour l’e-mail des étudiants</description>

<value>@univ-nancy2.fr</value>

</property>

 

<property name= »lienContact »>

<description>l’e-mail du lien ‘nous contacter'</description>

<value>scolarite@univ-nancy2.fr</value>

</property>

 

<property name= »mailInstalle »>

<description>vrai si la possibilité d’appeler le canal MailTo est implémentée et que l’on souhaite l’en servir pour l’envoi de mail. Sinon l’application utilise un simple lien ‘mailto:'</description>

<value>false</value>

</property>

 

<property name= »msgConnexion »>

<description>le message d’erreur de connection</description>

<value>Vous n’êtes pas connecté</value>

</property>

 

<property name= »msgRefusAcces »>

<description>le message d’interdiction d’acces</description>

<value>Vous n’avez pas accès à cette partie.</value>

</property>

 

<property name= »calExam »>

<description>utiliser calExam a la place de Calendrier original</description>

<value>false</value>

</property>

 

<property name= »calRent »>

<description>utiliser le calendrier de rentrée</description>

<value>false</value>

</property>

 

<property name= »resultats »>

<description>utiliser Resultats a la place de Notes original</description>

<value>false</value>

</property>

 

</bean>

 

 

‘config’ est par exemple utilisé dans le fichier template-contact.xml pour afficher un simple lien ‘mailto :’ et récupérer l’adresse de la scolarité pour le lien ‘nous contacter’ :

<h:outputText rendered= »#{!config.mailInstalle} »>

<a href= »mailto:#{config.lienContact} »><b><u>Nous contacter</u></b></a>

</h:outputText>

 

Il est, par exemple, aussi utilisé par le converter ‘EmailConverter’ pour donner l’adresse mail d’un étudiant à partir de son login :

public String getMail(String login) {

if (config.getExtMail() != null && !config.getExtMail().equals(«  »))

return login + config.getExtMail();

return «  »;

}

 

 

2/ Le bean ‘security’ :

Il sert à configurer l’accès à l’application. On y renseigne le type ldap correspondant à l’étudiant (si ldap renvoi ce type pour le login de l’utilisateur, il est étudiant, sinon on procède à d’autres vérifications), et la liste des groupes uportal dont les membres sont autorisés à accéder à l’application en tant qu’enseignant.

 

<bean id= »security » class= »org.esupportail.mondossierweb.domain.beans.Security »>

<description>

bean pour stocker la configuration de l’accès à l’application.

</description>

 

<property name= »service » ref= »service »>

<description>Le service d’accès à la base de donnée</description>

</property>

 

<property name= »ldapService » ref= »ldapService »>

<description>le service ldap</description>

</property>

 

<property name= »portalService » ref= »portalService »>

<description>le service uportal</description>

</property>

 

<property name= »typeEtudiantLdap »>

<description>Le type ldap designant un etudiant</description>

<value>student</value>

</property>

 

<property name= »listeGroupesPortal »>

<description>La liste des groupe uportal autorisant l’accès à mondossierWeb en tant qu’enseignant</description>

<list>

<value>Tous les groupes de personnes</value>

</list>

</property>

 

</bean>

 

Il fournit aussi des méthodes indispensables à l’identification de l’utilisateur. En effet, ‘Security.java’ implémente l’interface ‘ISecurity’, qui définit les méthodes utilisées par le SessionController lors de l’identification de l’utilisateur. Voici le code de l’interface ‘ISecutity’ :

public interface ISecurity {

 

//donne le type de l’utilisateur dans l’application a partir de son identifiant

public String getTypeUser(String id);

 

//donne le type ldap de l’utilisateur a partir de son identifiant

public String typeLdap(String login);

}

 

Et voici un exemple de notre implémentation des méthodes de ‘ISecurity’ dans ‘Security’ à l’heure actuelle:

/**

* @param login de l’utilisateur

* @return le type retourné par ldap.

*/

public String typeLdap(String login){

try{

LdapUser ldapuser=ldapService.getLdapUser(login);

Map mattributs =ldapuser.getAttributes();

List<String> ltype=(List<String>)mattributs.get(« edupersonprimaryaffiliation »);

return ltype.get(0);

}catch(Exception e){

return « error »;

}

}

 

 

 

 

/**

* @param id identifiant de l’utilisateur

* @return type utilisateur (etudiant, enseignant ou non-autorise)

*/

public String getTypeUser(String id){

String typeuser= » »;

String type=typeLdap(id);

if(type.equals(getTypeEtudiantLdap())){

typeuser= »etudiant »;

}else{

//on cherche a savoir si l’employé a acces (ex: c’est un enseignant)

//si autorise type=enseignant, sinon type=non-autorise

try{

//recupère l’utilisateur uportal

PortalUser portaluser = portalService.getUser(id);

//on cherche si il appartient a un groupe

boolean useruportal=false;

//on reucpère la liste de groupe mis dans le bean security

List<String> listegroupes=getListeGroupesPortal();

//on regarde si il appartient a un des groupes

for(String nomgroupe : listegroupes){

//on cherche le groupe

PortalGroup pgroup=portalService.getGroupByName(nomgroupe); if(pgroup!=null){

//on regarde si l’utilisateur appartient a ce groupe if(portalService.isUserMemberOfGroup(portaluser, pgroup)){

//c’est un utilisateur uportal

useruportal=true;

}

}

if(useruportal){

//c’est un utilisateur uportal il est autorisé en tant qu’enseignant

typeuser= »enseignant »;

}else{

//Test présence dans la table utilisateur d’Apogee

//on regarde si il est dans la table utilisateur

String coduti=service.getCodUti(id);

if(coduti!=null){

typeuser= »enseignant »;

}else{

typeuser= »non-autorise »;

}

}

}catch(Exception e){

//erreur avec uportal

//Test présence dans la table utilisateur de Apogee

//on regarde si il est dans la table utilisateur

String coduti=service.getCodUti(id);

if(coduti!=null){

typeuser= »enseignant »;

}else{

typeuser= »non-autorise »;

}

}

}

return typeuser;

}

Publié dans Spring. Leave a Comment »

Laisser un commentaire