Author: glandais Date: 2008-03-21 16:49:07 +0000 (Fri, 21 Mar 2008) New Revision: 1436 Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java Log: Rules update (user not logged) Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java 2008-03-21 16:48:43 UTC (rev 1435) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java 2008-03-21 16:49:07 UTC (rev 1436) @@ -92,52 +92,59 @@ Permission p = null; User user = daoActor.getLoggedUser(token); - - if (user.isSuperAdmin()) { + if (user == null) { p = new Permission(); - p.setOwner(true); - p.setCanAdmin(true); - p.setCanRead(true); - p.setCanWrite(true); + p.setOwner(false); + p.setCanAdmin(false); + p.setCanRead(false); + p.setCanWrite(false); } else { - p = new Permission(); - - List<Permission> permissions = daoPermission.getPermissions(businessId); - - if (permissions.size() == 0) { + if (user.isSuperAdmin()) { + p = new Permission(); p.setOwner(true); p.setCanAdmin(true); p.setCanRead(true); p.setCanWrite(true); } else { - p.setOwner(false); - p.setCanAdmin(false); - p.setCanRead(false); - p.setCanWrite(false); - } + p = new Permission(); - for (Permission permission : permissions) { - boolean appliesTo = appliesTo(user, permission.getActor()); - if (appliesTo) { - p.setOwner(p.isOwner() || permission.isOwner()); - p.setCanAdmin(p.isCanAdmin() || permission.isCanAdmin()); - p.setCanRead(p.isCanRead() || permission.isCanRead()); - p.setCanWrite(p.isCanWrite() || permission.isCanWrite()); + List<Permission> permissions = daoPermission.getPermissions(businessId); + + if (permissions.size() == 0) { + p.setOwner(true); + p.setCanAdmin(true); + p.setCanRead(true); + p.setCanWrite(true); + } else { + p.setOwner(false); + p.setCanAdmin(false); + p.setCanRead(false); + p.setCanWrite(false); } - } - if (p.isCanWrite()) { - p.setCanRead(true); + for (Permission permission : permissions) { + boolean appliesTo = appliesTo(user, permission.getActor()); + if (appliesTo) { + p.setOwner(p.isOwner() || permission.isOwner()); + p.setCanAdmin(p.isCanAdmin() || permission.isCanAdmin()); + p.setCanRead(p.isCanRead() || permission.isCanRead()); + p.setCanWrite(p.isCanWrite() || permission.isCanWrite()); + } + } + + if (p.isCanWrite()) { + p.setCanRead(true); + } + if (p.isCanAdmin()) { + p.setCanRead(true); + p.setCanWrite(true); + } + if (p.isOwner()) { + p.setCanAdmin(true); + p.setCanRead(true); + p.setCanWrite(true); + } } - if (p.isCanAdmin()) { - p.setCanRead(true); - p.setCanWrite(true); - } - if (p.isOwner()) { - p.setCanAdmin(true); - p.setCanRead(true); - p.setCanWrite(true); - } } return p; @@ -148,23 +155,25 @@ */ public void saveElement(String token, String businessId) { User user = daoActor.getLoggedUser(token); - if (!user.isSuperAdmin()) { - Permission p = daoPermission.getPermission(businessId, user); - if (p == null) { - p = new Permission(); - p.setActor(user); - p.setBusinessId(businessId); - p.setOwner(true); - daoPermission.savePermission(p); - log.debug("CREATED PERMISSION : " + p.toString()); - } else { - p.setOwner(true); - daoPermission.updatePermission(p); + if (user != null) { + if (!user.isSuperAdmin()) { + Permission p = daoPermission.getPermission(businessId, user); + if (p == null) { + p = new Permission(); + p.setActor(user); + p.setBusinessId(businessId); + p.setOwner(true); + daoPermission.savePermission(p); + log.debug("CREATED PERMISSION : " + p.toString()); + } else { + p.setOwner(true); + daoPermission.updatePermission(p); + } } + synchronized (usersCachedSynchronizer) { + usersCached.clear(); + } } - synchronized (usersCachedSynchronizer) { - usersCached.clear(); - } } /* (non-Javadoc) @@ -211,10 +220,14 @@ List<String> businessIdsVisibleBy = null; User user = daoActor.getLoggedUser(token); - if (!user.isSuperAdmin()) { - Set<Actor> actors = new HashSet<Actor>(); - getActors(user, actors); - businessIdsVisibleBy = daoPermission.getBusinessIdsVisibleBy(actors); + if (user == null) { + businessIdsVisibleBy = new ArrayList<String>(); + } else { + if (!user.isSuperAdmin()) { + Set<Actor> actors = new HashSet<Actor>(); + getActors(user, actors); + businessIdsVisibleBy = daoPermission.getBusinessIdsVisibleBy(actors); + } } synchronized (usersCachedSynchronizer) { @@ -245,6 +258,9 @@ @Override public String getUserFilter(String token) { User user = daoActor.getLoggedUser(token); + if (user == null) { + return ""; + } return user.getActorId().toString(); }