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; } |
Laisser un commentaire