Index: topia-security/src/java/org/codelutin/topia/security/util/TopiaSecurityFactoryFilter.java diff -u topia-security/src/java/org/codelutin/topia/security/util/TopiaSecurityFactoryFilter.java:1.1 topia-security/src/java/org/codelutin/topia/security/util/TopiaSecurityFactoryFilter.java:1.2 --- topia-security/src/java/org/codelutin/topia/security/util/TopiaSecurityFactoryFilter.java:1.1 Mon Oct 16 14:15:46 2006 +++ topia-security/src/java/org/codelutin/topia/security/util/TopiaSecurityFactoryFilter.java Mon Oct 16 14:27:40 2006 @@ -32,10 +32,9 @@ import org.codelutin.topia.security.TopiaSecurityManagerImpl; /** - * La classe permet d'encapsuler une collection d'entités et de filtrer son contenu + * La classe permet de filtrer n'importe quel objet (Collection, List, TopiaEntity, ...) * par rapport à une permission. * @author ruchaud - * @param */ public class TopiaSecurityFactoryFilter { @@ -51,10 +50,35 @@ this.securityManager = securityManager; } - public List filter(List entities, int actions) { - return (List) filter((Collection)entities, actions); + public void filter(Collection entities, int actions, String ... fields) { + //TODO: Gestion des autorisations sur les champs (cf TopiaEntityAuthorization) + throw new UnsupportedOperationException(); + } + + /** + * Filtre une entité + * @param entity entité à filtrer + * @param actions la filtre + * @return null si non autorisé sinon l'entité + */ + public TopiaEntity filter(TopiaEntity entity, int actions) { + try { + securityManager.checkPermission(entity.getTopiaId(), actions); + } catch (TopiaException e) { + if(log.isDebugEnabled()) { + log.debug("Return Null because : " + e); + } + return null; + } + return entity; } + /** + * Filtre une collection + * @param entities la collection à filtrer + * @param actions le filtre + * @return la collection filtrée + */ public Collection filter(Collection entities, int actions) { Collection result = new ArrayList(entities); for (Iterator iterator = result.iterator(); iterator.hasNext();) { @@ -71,9 +95,14 @@ return result; } - public void filter(Collection entities, int actions, String ... fields) { - //TODO: Gestion des autorisations sur les champs (cf TopiaEntityAuthorization) - throw new UnsupportedOperationException(); + /** + * Filtre sur une liste + * @param entities la liste à filtrer + * @param actions le filtre + * @return la liste filtrée + */ + public List filter(List entities, int actions) { + return (List) filter((Collection)entities, actions); } }