From 3ce39b368ff5836e04d17b1c678cbf5cb8a06348 Mon Sep 17 00:00:00 2001 From: ssound Date: Fri, 22 Nov 2024 11:40:51 +0100 Subject: [PATCH] =?UTF-8?q?=C3=A0=20la=20connexion=20:=20r=C3=A9cup=C3=A9r?= =?UTF-8?q?ation=20du=20nom=20et=20pr=C3=A9nom=20depuis=20le=20LDAP=20au?= =?UTF-8?q?=20lieu=20de=20pointer=20sur=20le=20retour=20du=20CAS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../userdetails/CasUserDetailsServiceImpl.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/esup_portail/esup_stage/security/userdetails/CasUserDetailsServiceImpl.java b/src/main/java/org/esup_portail/esup_stage/security/userdetails/CasUserDetailsServiceImpl.java index ee208f41..7cb46e9b 100644 --- a/src/main/java/org/esup_portail/esup_stage/security/userdetails/CasUserDetailsServiceImpl.java +++ b/src/main/java/org/esup_portail/esup_stage/security/userdetails/CasUserDetailsServiceImpl.java @@ -9,7 +9,6 @@ import org.esup_portail.esup_stage.service.AppConfigService; import org.esup_portail.esup_stage.service.ldap.LdapService; import org.esup_portail.esup_stage.service.ldap.model.LdapUser; -import org.jasig.cas.client.authentication.AttributePrincipal; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.cas.authentication.CasAssertionAuthenticationToken; import org.springframework.security.core.GrantedAuthority; @@ -18,7 +17,10 @@ import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UsernameNotFoundException; -import java.util.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; public class CasUserDetailsServiceImpl implements AuthenticationUserDetailsService { @@ -45,11 +47,7 @@ public class CasUserDetailsServiceImpl implements AuthenticationUserDetailsServi @Override public UserDetails loadUserDetails(CasAssertionAuthenticationToken authentication) throws UsernameNotFoundException { - AttributePrincipal principal = authentication.getAssertion().getPrincipal(); String username = authentication.getName(); - Map attributes = principal.getAttributes(); - String nom = getStringValue(attributes.get("sn")); - String prenom = getStringValue(attributes.get("givenName")); // Recherche de l'utilisateur Utilisateur utilisateur = utilisateurJpaRepository.findOneByLogin(username); @@ -78,8 +76,8 @@ public UserDetails loadUserDetails(CasAssertionAuthenticationToken authenticatio } utilisateur = new Utilisateur(); utilisateur.setLogin(username); - utilisateur.setNom(nom); - utilisateur.setPrenom(prenom); + utilisateur.setNom(String.join(" ", users.get(0).getSn())); + utilisateur.setPrenom(String.join(" ", users.get(0).getGivenName())); utilisateur.setActif(true); utilisateur.setRoles(roles); utilisateur.setUid(users.get(0).getUid()); @@ -93,6 +91,8 @@ public UserDetails loadUserDetails(CasAssertionAuthenticationToken authenticatio if (ldapUser == null) { throw new UsernameNotFoundException("Utilisateur LDAP non trouvé à partir du login " + utilisateur.getLogin()); } + String nom = String.join(" ", ldapUser.getSn()); + String prenom = String.join(" ", ldapUser.getGivenName()); // Si c'est un étudiant on lui créé une ligne dans la table Etudiant s'il n'existe pas if (UtilisateurHelper.isRole(utilisateur, Role.ETU)) { Etudiant etudiant = etudiantRepository.findByNumEtudiant(ldapUser.getCodEtu());