Index: topia2/src/java/org/codelutin/topia/security/TopiaSecurityVetoableListener.java diff -u topia2/src/java/org/codelutin/topia/security/TopiaSecurityVetoableListener.java:1.1 topia2/src/java/org/codelutin/topia/security/TopiaSecurityVetoableListener.java:1.2 --- topia2/src/java/org/codelutin/topia/security/TopiaSecurityVetoableListener.java:1.1 Fri Feb 24 00:48:15 2006 +++ topia2/src/java/org/codelutin/topia/security/TopiaSecurityVetoableListener.java Fri Jul 21 00:53:52 2006 @@ -66,7 +66,7 @@ public class TopiaSecurityVetoableListener implements TopiaVetoableEntityListener, TopiaVetoableEntityLoadListener { - private Log log = LogFactory.getLog(TopiaSecurityVetoableListener.class); + private static Log log = LogFactory.getLog(TopiaSecurityVetoableListener.class); /* (non-Javadoc) * @see org.codelutin.topia.event.TopiaVetoableEntityListener#createEntity(org.codelutin.topia.event.TopiaVetoableEntityEvent) @@ -117,16 +117,20 @@ if (log.isDebugEnabled()) { log.debug("[Security] load entity : " + event.getId()); } + //Le chargement des utilisateurs et permissions doit etre possible pour tous if (event.getEntityClass().equals(TopiaUserImpl.class) || event.getEntityClass().equals(TopiaEntityPermissionImpl.class)){ - if (log.isInfoEnabled()) { - log.info("[Security] load granted to : " + event.getId()); + if (log.isDebugEnabled()) { + log.debug("[Security] load granted to : " + event.getId()); } return true; } try { checkPermission((String)event.getId(), LOAD_TEXT); } catch (TopiaException te) { + if (log.isWarnEnabled()) { + log.warn("[Security] load denied to : " + event.getId()); + } return false; } return true; @@ -135,16 +139,17 @@ /** * Vérifie si l'utilisateur actuellement loggué a le droit d'accéder à * l'entité passée en paramètre pour les actions spécifiées. - * @param entity l'entité pour laquelle on vérifie les droits - * @param actions les actions [read, write, admin] + * @param entientityClassty l'entité pour laquelle on vérifie les droits + * @param actions les actions [load, read, write, admin] * @throws TopiaSecurityException */ - private void checkPermission(Class entityClass, String actions) throws TopiaException { + public static void checkPermission(Class entityClass, String actions) throws TopiaException { if (log.isTraceEnabled()) { log.trace("Checking permissions to entity class : " + entityClass); } - if (entityClass == null) + if (entityClass == null) { throw new TopiaException("Class cannot be null"); + } String topiaId = entityClass.getName() + "#*"; checkPermission(topiaId, actions); } @@ -153,13 +158,14 @@ * Vérifie si l'utilisateur actuellement loggué a le droit d'accéder à * l'entité passée en paramètre pour les actions spécifiées. * @param topiaId le topiaId de l'entité pour laquelle on vérifie les droits - * @param actions les actions [read, write, admin] + * @param actions les actions [load, read, write, admin] * @throws TopiaSecurityException */ - private void checkPermission(String topiaId, String actions) throws TopiaException { + public static void checkPermission(String topiaId, String actions) throws TopiaException { Subject subj = Subject.getSubject(AccessController.getContext()); - if (subj == null) + if (subj == null) { throw new TopiaException("Use doAs() and login first"); + } try { TopiaEntityPermission entityPerm = new TopiaEntityPermissionImpl( topiaId, subj.getPrincipals(), actions);