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.2 topia-security/src/java/org/codelutin/topia/security/jaas/TopiaLoginModule.java:1.3 --- topia-security/src/java/org/codelutin/topia/security/jaas/TopiaLoginModule.java:1.2 Wed Sep 13 14:26:18 2006 +++ topia-security/src/java/org/codelutin/topia/security/jaas/TopiaLoginModule.java Thu Sep 14 13:41:59 2006 @@ -24,9 +24,9 @@ * Created: 15 févr. 2006 * * @author Arnaud Thimel -* @version $Revision: 1.2 $ +* @version $Revision: 1.3 $ * -* Mise a jour: $Date: 2006/09/13 14:26:18 $ +* Mise a jour: $Date: 2006/09/14 13:41:59 $ * par : $Author: ruchaud $ */ @@ -138,11 +138,11 @@ if(user != null && user.isCorrectPassword(password)) { // Récupération des principals principals = new HashSet(); - principals.add(new TopiaPrincipal(user.getTopiaId())); + principals.add(new org.codelutin.topia.security.jaas.TopiaPrincipal(user.getTopiaId())); Collection groups = user.getTopiaGroup(); if(groups != null) { for(TopiaGroup group : groups) { - principals.add(new TopiaPrincipal(group.getTopiaId())); + principals.add(new org.codelutin.topia.security.jaas.TopiaPrincipal(group.getTopiaId())); } } } else { @@ -175,7 +175,7 @@ */ public boolean logout() throws LoginException { //On libère les ressources - subject.getPrincipals().remove(principals); + subject.getPrincipals().removeAll(principals); subject = null; principals.clear(); principals = null; Index: topia-security/src/java/org/codelutin/topia/security/jaas/TopiaPolicy.java diff -u topia-security/src/java/org/codelutin/topia/security/jaas/TopiaPolicy.java:1.1 topia-security/src/java/org/codelutin/topia/security/jaas/TopiaPolicy.java:1.2 --- topia-security/src/java/org/codelutin/topia/security/jaas/TopiaPolicy.java:1.1 Wed Sep 13 08:45:10 2006 +++ topia-security/src/java/org/codelutin/topia/security/jaas/TopiaPolicy.java Thu Sep 14 13:41:59 2006 @@ -24,9 +24,9 @@ * Created: 17 févr. 2006 * * @author Arnaud Thimel - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ * - * Mise a jour: $Date: 2006/09/13 08:45:10 $ + * Mise a jour: $Date: 2006/09/14 13:41:59 $ * par : $Author: ruchaud $ */ @@ -41,34 +41,27 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.codelutin.topia.TopiaContext; import org.codelutin.topia.TopiaException; -import org.codelutin.topia.framework.TopiaContextImplementor; -import org.codelutin.topia.security.TopiaSecurityDAOHelper; +import org.codelutin.topia.security.TopiaSecurityManager; import org.codelutin.topia.security.entities.authorization.TopiaAuthorization; import org.codelutin.topia.security.entities.authorization.TopiaAuthorizationDAO; +import org.codelutin.topia.security.entities.authorization.TopiaEntityAuthorization; +import org.codelutin.topia.security.entities.authorization.TopiaEntityAuthorizationDAO; public class TopiaPolicy extends Policy { private Log log = LogFactory.getLog(TopiaPolicy.class); - private TopiaContextImplementor topiaContext; + private TopiaSecurityManager securityManager; protected Policy parentPolicy; - public TopiaPolicy(TopiaContext context) { + //TODO: Faire un cache pour éviter les instanciations inutiles + + public TopiaPolicy(TopiaSecurityManager securityManager) { super(); - this.topiaContext = (TopiaContextImplementor) context; - } - - private TopiaAuthorizationDAO getTopiaAuthorizationDAO() { - try { - return TopiaSecurityDAOHelper.getTopiaAuthorizationDAO(topiaContext.beginTransaction()); - } catch (TopiaException te) { - log.error("Permission manager non accessible", te); - } - return null; + this.securityManager = securityManager; } /** @@ -104,11 +97,11 @@ @Override public PermissionCollection getPermissions(ProtectionDomain domain) { PermissionCollection pc = parentPolicy.getPermissions(domain); - TopiaAuthorizationDAO authorizationDAO = getTopiaAuthorizationDAO(); - if (authorizationDAO != null) { + TopiaEntityAuthorizationDAO entityAuthorizationDAO = securityManager.getTopiaEntityAuthorizationDAO(); + if (entityAuthorizationDAO != null) { try { - Collection authorizations = authorizationDAO.findAll(); - for (TopiaAuthorization authorization : authorizations) { + Collection authorizations = entityAuthorizationDAO.findAll(); + for (TopiaEntityAuthorization authorization : authorizations) { pc.add(new TopiaPermission(authorization)); } } catch (TopiaException te) { Index: topia-security/src/java/org/codelutin/topia/security/jaas/TopiaPermission.java diff -u topia-security/src/java/org/codelutin/topia/security/jaas/TopiaPermission.java:1.1 topia-security/src/java/org/codelutin/topia/security/jaas/TopiaPermission.java:1.2 --- topia-security/src/java/org/codelutin/topia/security/jaas/TopiaPermission.java:1.1 Wed Sep 13 08:45:10 2006 +++ topia-security/src/java/org/codelutin/topia/security/jaas/TopiaPermission.java Thu Sep 14 13:41:59 2006 @@ -24,9 +24,9 @@ * Created: 16 févr. 2006 * * @author Arnaud Thimel -* @version $Revision: 1.1 $ +* @version $Revision: 1.2 $ * -* Mise a jour: $Date: 2006/09/13 08:45:10 $ +* Mise a jour: $Date: 2006/09/14 13:41:59 $ * par : $Author: ruchaud $ */ @@ -36,6 +36,7 @@ import java.security.Permission; import org.codelutin.topia.security.entities.authorization.TopiaAuthorization; +import org.codelutin.topia.security.entities.authorization.TopiaEntityAuthorization; public class TopiaPermission extends Permission { @@ -55,7 +56,7 @@ if (!(permission instanceof TopiaPermission)) return false; TopiaPermission other = (TopiaPermission)permission; - return authorization.implies(other.getAuthorization()); + return authorization.implies((TopiaEntityAuthorization) other.getAuthorization()); } @Override