Index: topia-security/src/java/org/codelutin/topia/security/jaas/TopiaLoginModule.java diff -u topia-security/src/java/org/codelutin/topia/security/jaas/TopiaLoginModule.java:1.9 topia-security/src/java/org/codelutin/topia/security/jaas/TopiaLoginModule.java:1.10 --- topia-security/src/java/org/codelutin/topia/security/jaas/TopiaLoginModule.java:1.9 Wed Oct 18 08:46:34 2006 +++ topia-security/src/java/org/codelutin/topia/security/jaas/TopiaLoginModule.java Tue Oct 31 11:01:43 2006 @@ -24,9 +24,9 @@ * Created: 15 févr. 2006 * * @author Arnaud Thimel -* @version $Revision: 1.9 $ +* @version $Revision: 1.10 $ * -* Mise a jour: $Date: 2006/10/18 08:46:34 $ +* Mise a jour: $Date: 2006/10/31 11:01:43 $ * par : $Author: ruchaud $ */ @@ -35,8 +35,8 @@ import static org.codelutin.topia.security.util.TopiaSecurityUtil.SECURITY_MANAGER_KEY; import java.security.Principal; -import java.util.Collection; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -121,11 +121,11 @@ password = new String(pc.getPassword()); pc.clearPassword(); - //Vérification du login/pass et récupération des Principal + //Vérification du login/pass et récupération des Principals try { TopiaUserDAO topiaUserDAO = securityManager.getTopiaUserDAO(); TopiaUser user = topiaUserDAO.findByLogin(login); - + if(user != null && user.checkPassword(password)) { // Récupération des principals principals = new HashSet(); @@ -135,7 +135,12 @@ securityManager.putPermissionsCache(topiaIdUser); securityManager.removeEntitiesLoadingCache(topiaIdUser); - Collection groups = user.getTopiaGroup(); + // Force le rechargement des groupes d'où la non utilisation de + // la méthode : user.getTopiaGroup() + List groups = securityManager.getSecurityContext().find( + "select topiaGroup from " + TopiaGroup.class.getName() + + " topiaGroup join topiaGroup.topiaUser as topiaUser where topiaUser = ?", user); + if(groups != null) { for(TopiaGroup group : groups) { String topiaIdGroup = group.getTopiaId();