From glandais@users.labs.libre-entreprise.org Mon Jun 15 08:43:40 2026 From: glandais@users.labs.libre-entreprise.org To: simexplorer-si-commits@list.forge.codelutin.com Subject: [Simexplorer-si-commits] r419 - in trunk: simexplorer-is-security/src/java/META-INF =?utf-8?q?simexplorer-is-security?= =?utf-8?q?/src/java/fr/cemagref/simexplorer/is/security/credentials?= simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service simexplorer-is-service/src/java/fr/cemagref/simexplorer Date: Tue, 22 Jan 2008 19:37:34 +0100 Message-ID: <20080122183734.A376D461A92@labs.libre-entreprise.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6289923983363286894==" --===============6289923983363286894== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Author: glandais Date: 2008-01-22 18:37:33 +0000 (Tue, 22 Jan 2008) New Revision: 419 Added: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security= /entities/Permission.java Modified: trunk/simexplorer-is-security/src/java/META-INF/orm.xml trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security= /credentials/CredentialManager.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security= /credentials/CredentialManagerImpl.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security= /dao/DaoSecurity.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security= /dao/DaoSecurityImpl.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security= /entities/Actor.java trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security= /test/SecurityTestCase.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/S= torageServiceCommon.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/S= torageServiceServer.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/e= ngine/StorageEngineSecuImpl.java trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/e= ngine/StorageEngine.java trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/e= ngine/StorageEngineImpl.java Log: Secured service Modified: trunk/simexplorer-is-security/src/java/META-INF/orm.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-security/src/java/META-INF/orm.xml 2008-01-22 16:32:= 43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/META-INF/orm.xml 2008-01-22 18:37:= 33 UTC (rev 419) @@ -17,7 +17,8 @@ - + @@ -62,4 +63,19 @@ =20 + + + + + + + + + + + + + + + Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/s= ecurity/credentials/CredentialManager.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/credentials/CredentialManager.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/credentials/CredentialManager.java 2008-01-22 18:37:33 UTC (rev 419) @@ -2,7 +2,13 @@ =20 import javax.ejb.Local; =20 +import fr.cemagref.simexplorer.is.security.entities.Permission; + @Local public interface CredentialManager { =20 + public Permission getPermission(String token, String businessId); + + public Permission saveElement(String token, String businessId); + } Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/s= ecurity/credentials/CredentialManagerImpl.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/credentials/CredentialManagerImpl.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/credentials/CredentialManagerImpl.java 2008-01-22 18:37:33 UTC (rev 419) @@ -1,10 +1,71 @@ package fr.cemagref.simexplorer.is.security.credentials; =20 +import java.util.List; + +import javax.ejb.EJB; import javax.ejb.Local; import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; =20 +import fr.cemagref.simexplorer.is.security.dao.DaoSecurity; +import fr.cemagref.simexplorer.is.security.entities.Actor; +import fr.cemagref.simexplorer.is.security.entities.Group; +import fr.cemagref.simexplorer.is.security.entities.Permission; + @Stateless(name =3D "CredentialManager") @Local(CredentialManager.class) + at TransactionAttribute(TransactionAttributeType.REQUIRED) public class CredentialManagerImpl implements CredentialManager { =20 + @EJB + private DaoSecurity dao; + + private int getRelativeLevel(Actor actor, Permission permission) { + int level =3D -1; + if (actor.equals(permission.getActor())) { + return 0; + } else { + List groups =3D actor.getGroups(); + for (Group group : groups) { + int levelGroup =3D getRelativeLevel(group, permission); + if (levelGroup >=3D 0) { + level =3D levelGroup + 1; + } + } + } + return level; + } + + public Permission getPermission(String token, String businessId) { + Permission p =3D null; + + Actor actor =3D dao.getLoggedUser(token); + List permissions =3D dao.getPermissions(businessId); + int minLevel =3D 0; + + for (Permission permission : permissions) { + int relativeLevel =3D getRelativeLevel(actor, permission); + if (relativeLevel >=3D 0) { + if (p =3D=3D null || minLevel > relativeLevel) { + p =3D permission; + minLevel =3D relativeLevel; + } + } + } + return p; + } + + public Permission saveElement(String token, String businessId) { + Permission p =3D new Permission(); + p.setActor(dao.getLoggedUser(token)); + p.setBusinessId(businessId); + p.setCanAdmin(true); + p.setCanRead(true); + p.setCanWrite(true); + p.setOwner(true); + dao.savePermission(p); + return p; + } + } Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/s= ecurity/dao/DaoSecurity.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/dao/DaoSecurity.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/dao/DaoSecurity.java 2008-01-22 18:37:33 UTC (rev 419) @@ -4,6 +4,7 @@ =20 import fr.cemagref.simexplorer.is.security.entities.Group; import fr.cemagref.simexplorer.is.security.entities.LoginAction; +import fr.cemagref.simexplorer.is.security.entities.Permission; import fr.cemagref.simexplorer.is.security.entities.User; =20 public interface DaoSecurity { @@ -48,4 +49,8 @@ =20 public List getGroupsOfGroup(Group group); =20 + public List getPermissions(String businessId); + + public void savePermission(Permission p); + } Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/s= ecurity/dao/DaoSecurityImpl.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/dao/DaoSecurityImpl.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/dao/DaoSecurityImpl.java 2008-01-22 18:37:33 UTC (rev 419) @@ -10,6 +10,7 @@ import fr.cemagref.simexplorer.is.security.entities.Actor; import fr.cemagref.simexplorer.is.security.entities.Group; import fr.cemagref.simexplorer.is.security.entities.LoginAction; +import fr.cemagref.simexplorer.is.security.entities.Permission; import fr.cemagref.simexplorer.is.security.entities.User; =20 @Stateless(name =3D "DaoSecurity") @@ -166,4 +167,15 @@ return groups; } =20 + public List getPermissions(String businessId) { + List permissions =3D em.createQuery( + "select p from Permission p where p.businessId=3D:businessId= ") + .setParameter("businessId", businessId).getResultList(); + return permissions; + } + + public void savePermission(Permission p) { + em.persist(p); + } + } Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/s= ecurity/entities/Actor.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/entities/Actor.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/entities/Actor.java 2008-01-22 18:37:33 UTC (rev 419) @@ -34,14 +34,14 @@ =20 private int hashCodeGroups(List groups) { final int prime =3D 31; - int result =3D 1; =20 + int result =3D 1; result =3D prime * result + groups.size(); for (Group group : groups) { - result =3D prime * result + ((group =3D=3D null) ? 0 : group.has= hCode()); - } =20 - return result; =20 + result =3D prime * result + ((group =3D=3D null) ? 0 : group.get= Id()); + } + return result; } - =20 + @Override public int hashCode() { final int prime =3D 31; @@ -67,8 +67,10 @@ if (group1 =3D=3D null) { if (group2 !=3D null) return false; - } else if (!group1.equals(group2)) + } else if (group1.getId() =3D=3D null) { return false; + } else if (!group1.getId().equals(group2.getId())) + return false; } return true; } Added: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/secu= rity/entities/Permission.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/entities/Permission.java (rev 0) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/securit= y/entities/Permission.java 2008-01-22 18:37:33 UTC (rev 419) @@ -0,0 +1,69 @@ +package fr.cemagref.simexplorer.is.security.entities; + +public class Permission { + + private Integer id; + private String businessId; + private Actor actor; + private boolean canRead; + private boolean canWrite; + private boolean canAdmin; + private boolean isOwner; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id =3D id; + } + + public String getBusinessId() { + return businessId; + } + + public void setBusinessId(String businessId) { + this.businessId =3D businessId; + } + + public Actor getActor() { + return actor; + } + + public void setActor(Actor actor) { + this.actor =3D actor; + } + + public boolean isCanRead() { + return canRead; + } + + public void setCanRead(boolean canRead) { + this.canRead =3D canRead; + } + + public boolean isCanWrite() { + return canWrite; + } + + public void setCanWrite(boolean canWrite) { + this.canWrite =3D canWrite; + } + + public boolean isCanAdmin() { + return canAdmin; + } + + public void setCanAdmin(boolean canAdmin) { + this.canAdmin =3D canAdmin; + } + + public boolean isOwner() { + return isOwner; + } + + public void setOwner(boolean isOwner) { + this.isOwner =3D isOwner; + } + +} Modified: trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/s= ecurity/test/SecurityTestCase.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/securit= y/test/SecurityTestCase.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/securit= y/test/SecurityTestCase.java 2008-01-22 18:37:33 UTC (rev 419) @@ -39,12 +39,20 @@ String token =3D authenticationService .loginUser("superadmin", "password"); =20 + Group everybody =3D authenticationService.saveGroup(token, "everybod= y", + authenticationService.getLoggedUser(token)); + + User me =3D authenticationService.getLoggedUser(token); + me.getGroups().add(everybody); + authenticationService.updateUser(token, me); + User[] simpleUsers =3D new User[20]; for (int i =3D 0; i < 20; i++) { simpleUsers[i] =3D authenticationService.saveUser(token, "user" = + i, "landais+simtest at codelutin.com"); simpleUsers[i].setAdmin(false); simpleUsers[i].setSuperAdmin(false); + simpleUsers[i].getGroups().add(everybody); authenticationService.updateUser(token, simpleUsers[i]); } =20 @@ -55,6 +63,7 @@ "landais+simtest at codelutin.com"); adminUsers[i].setAdmin(true); adminUsers[i].setSuperAdmin(false); + adminUsers[i].getGroups().add(everybody); authenticationService.updateUser(token, adminUsers[i]); =20 groups[i] =3D authenticationService.saveGroup(token, "group" + i, Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/se= rvice/StorageServiceCommon.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/= StorageServiceCommon.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/= StorageServiceCommon.java 2008-01-22 18:37:33 UTC (rev 419) @@ -80,33 +80,33 @@ } =20 public MetaDataEntity getMetadata(String token, String uuid) throws Exce= ption { - return storageEngine.getMetadata(uuid); + return storageEngine.getMetadata(token, uuid); } =20 public MetaDataEntity getMetadata(String token, String uuid, String vers= ion) throws Exception { - return storageEngine.getMetadata(uuid, new Version(version)); + return storageEngine.getMetadata(token, uuid, new Version(version)); } =20 public MetaDataEntity[] findFullText(String token, String query, boolean= onlyLatest, int indexStart, int count, int dateOrder) throws Exception { - return storageEngine.findFullText(query, onlyLatest, indexStart, cou= nt, + return storageEngine.findFullText(token, query, onlyLatest, indexSta= rt, count, dateOrder); } =20 public int findFullTextCount(String token, String query, boolean onlyLat= est) throws Exception { - return storageEngine.findFullTextCount(query, onlyLatest); + return storageEngine.findFullTextCount(token, query, onlyLatest); } =20 public int findApplicationsCount(String token, boolean onlyLatest) throw= s Exception { - return storageEngine.findElementsByTypeCount(VALUE_METADATA_TYPE_EA, + return storageEngine.findElementsByTypeCount(token, VALUE_METADATA_T= YPE_EA, onlyLatest); } =20 public MetaDataEntity[] findApplications(String token, boolean onlyLates= t, int start, int count, int dateOrder) throws Exception { - return storageEngine.findElementsByType(VALUE_METADATA_TYPE_EA, + return storageEngine.findElementsByType(token, VALUE_METADATA_TYPE_E= A, onlyLatest, start, count, dateOrder); } =20 @@ -116,7 +116,7 @@ =20 LoggableElement le =3D (LoggableElement) BaseEntityFactory.getFactor= y( LoggableElement.class.getPackage().getName() + "." + mde.get= Type()) - .loadElement(storageEngine.retrieveData(mde, KEY_XML)); + .loadElement(storageEngine.retrieveData(token, mde, KEY_XML)= ); =20 return le; } @@ -162,7 +162,7 @@ public void exportElement(String token, RemoteOutputStream xmlOutputStre= am, String uuid, String version) throws Exception { MetaDataEntity mde =3D getMetadata(uuid, version); - InputStream xmlStream =3D storageEngine.retrieveData(mde, KEY_XML); + InputStream xmlStream =3D storageEngine.retrieveData(token, mde, KEY= _XML); OutputStream os =3D RemoteOutputStreamClient.wrap(xmlOutputStream); =20 // Buffer copy stream to stream @@ -247,7 +247,7 @@ .retrieveTempData(entry.getValue())); } } - storageEngine.saveElement(metaData, attachments); + storageEngine.saveElement(token, metaData, attachments); storageEngine.commit(); =20 return metaData; @@ -256,7 +256,7 @@ private void processVersionRules(String token, MetaDataEntity metaData) = throws Exception { =20 // Check existing version in storage - MetaDataEntity previousVersion =3D storageEngine.getMetadata(metaData + MetaDataEntity previousVersion =3D storageEngine.getMetadata(token, = metaData .getUuid(), metaData.getVersion()); /* * MetaDataEntity parentData =3D storageEngine.getElementVersion(met= aData Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/se= rvice/StorageServiceServer.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/= StorageServiceServer.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/= StorageServiceServer.java 2008-01-22 18:37:33 UTC (rev 419) @@ -7,7 +7,7 @@ import org.jboss.annotation.ejb.RemoteBinding; =20 import fr.cemagref.simexplorer.is.security.service.AuthenticationService; -import fr.cemagref.simexplorer.is.storage.engine.StorageEngineSecuImpl; +import fr.cemagref.simexplorer.is.storage.engine.StorageEngineImpl; =20 @Stateless(name =3D "StorageService") @Remote(StorageService.class) @@ -18,7 +18,9 @@ private AuthenticationService authenticationService; =20 public StorageServiceServer() { - storageEngine =3D new StorageEngineSecuImpl(); + // FIXME + // storageEngine =3D new StorageEngineSecuImpl(); + storageEngine =3D new StorageEngineImpl(); super.firstOpen(); } =20 Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/st= orage/engine/StorageEngineSecuImpl.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/= engine/StorageEngineSecuImpl.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/= engine/StorageEngineSecuImpl.java 2008-01-22 18:37:33 UTC (rev 419) @@ -4,102 +4,124 @@ import java.util.List; import java.util.Map; =20 +import javax.ejb.EJB; + import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity; import fr.cemagref.simexplorer.is.entities.metadata.Version; +import fr.cemagref.simexplorer.is.security.credentials.CredentialManager; +import fr.cemagref.simexplorer.is.security.entities.Permission; =20 public class StorageEngineSecuImpl extends StorageEngineImpl { =20 + @EJB + private CredentialManager credentialManager; + @Override - public void deleteElement(String uuid, Version version) throws Exception= { - // TODO Auto-generated method stub - super.deleteElement(uuid, version); + public void deleteElement(String token, String uuid, Version version) + throws Exception { + Permission permission =3D credentialManager.getPermission(token, uui= d); + // TODO check candelete =3D canadmin + if (permission !=3D null && permission.isCanAdmin()) { + super.deleteElement(token, uuid, version); + } } =20 @Override - public void deleteElements(String uuid) throws Exception { - // TODO Auto-generated method stub - super.deleteElements(uuid); + public void deleteElements(String token, String uuid) throws Exception { + Permission permission =3D credentialManager.getPermission(token, uui= d); + // TODO check candelete =3D canadmin + if (permission !=3D null && permission.isCanAdmin()) { + super.deleteElements(token, uuid); + } } =20 @Override - public void deleteTempData(String id) throws Exception { - // TODO Auto-generated method stub - super.deleteTempData(id); + public MetaDataEntity[] findElementsByType(String token, String type, + boolean onlyLatest, int start, int count, int dateOrder) + throws Exception { + MetaDataEntity[] list =3D super.findElementsByType(token, type, + onlyLatest, start, count, dateOrder); + // TODO how to filter without losing pagination? + return list; } =20 @Override - public MetaDataEntity[] findElementsByType(String type, boolean onlyLate= st, - int start, int count, int dateOrder) throws Exception { - // TODO Auto-generated method stub - return super.findElementsByType(type, onlyLatest, start, count, - dateOrder); + public int findElementsByTypeCount(String token, String type, + boolean onlyLatest) throws Exception { + // TODO how to filter without losing pagination? + return super.findElementsByTypeCount(token, type, onlyLatest); } =20 @Override - public int findElementsByTypeCount(String type, boolean onlyLatest) + public MetaDataEntity[] findFullText(String token, String query, + boolean onlyLatest, int indexStart, int count, int dateOrder) throws Exception { - // TODO Auto-generated method stub - return super.findElementsByTypeCount(type, onlyLatest); - } - - @Override - public MetaDataEntity[] findFullText(String query, boolean onlyLatest, - int indexStart, int count, int dateOrder) throws Exception { - // TODO Auto-generated method stub - return super.findFullText(query, onlyLatest, indexStart, count, + // TODO how to filter without losing pagination? + return super.findFullText(token, query, onlyLatest, indexStart, coun= t, dateOrder); } =20 @Override - public int findFullTextCount(String query, boolean onlyLatest) + public int findFullTextCount(String token, String query, boolean onlyLat= est) throws Exception { - // TODO Auto-generated method stub - return super.findFullTextCount(query, onlyLatest); + // TODO how to filter without losing pagination? + return super.findFullTextCount(token, query, onlyLatest); } =20 @Override - public MetaDataEntity getMetadata(String uuid, Version version) + public MetaDataEntity getMetadata(String token, String uuid, Version ver= sion) throws Exception { - // TODO Auto-generated method stub - return super.getMetadata(uuid, version); + MetaDataEntity mde =3D null; + Permission permission =3D credentialManager.getPermission(token, uui= d); + if (permission.isCanRead()) { + mde =3D super.getMetadata(token, uuid, version); + } + return mde; } =20 @Override - public MetaDataEntity getMetadata(String uuid) throws Exception { - // TODO Auto-generated method stub - return super.getMetadata(uuid); + public MetaDataEntity getMetadata(String token, String uuid) + throws Exception { + MetaDataEntity mde =3D null; + Permission permission =3D credentialManager.getPermission(token, uui= d); + if (permission.isCanRead()) { + mde =3D super.getMetadata(token, uuid); + } + return mde; } =20 @Override - public List getVersions(String uuid) throws Exception { - // TODO Auto-generated method stub - return super.getVersions(uuid); - } - - @Override - public InputStream retrieveData(MetaDataEntity entity, String field) + public List getVersions(String token, String uuid) throws Exception { - // TODO Auto-generated method stub - return super.retrieveData(entity, field); + List versions =3D null; + Permission permission =3D credentialManager.getPermission(token, uui= d); + if (permission.isCanRead()) { + versions =3D super.getVersions(token, uuid); + } + return versions; } =20 @Override - public InputStream retrieveTempData(String id) throws Exception { - // TODO Auto-generated method stub - return super.retrieveTempData(id); + public InputStream retrieveData(String token, MetaDataEntity entity, + String field) throws Exception { + InputStream stream =3D null; + Permission permission =3D credentialManager.getPermission(token, ent= ity + .getUuid()); + if (permission.isCanRead()) { + stream =3D super.retrieveData(token, entity, field); + } + return stream; } =20 @Override - public void saveElement(MetaDataEntity element, + public void saveElement(String token, MetaDataEntity element, Map attachments) throws Exception { - // TODO Auto-generated method stub - super.saveElement(element, attachments); + Permission permission =3D credentialManager.getPermission(token, ele= ment + .getUuid()); + if (permission.isCanWrite()) { + super.saveElement(token, element, attachments); + credentialManager.saveElement(token, element.getUuid()); + } } =20 - @Override - public String storeTempData(InputStream stream) throws Exception { - // TODO Auto-generated method stub - return super.storeTempData(stream); - } - } Modified: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/st= orage/engine/StorageEngine.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/= engine/StorageEngine.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/= engine/StorageEngine.java 2008-01-22 18:37:33 UTC (rev 419) @@ -39,7 +39,7 @@ * Attachments related * @throws Exception */ - public abstract void saveElement(MetaDataEntity element, + public abstract void saveElement(String token, MetaDataEntity element, Map attachments) throws Exception; =20 /** @@ -50,7 +50,7 @@ * @return The element * @throws Exception */ - public abstract MetaDataEntity getMetadata(String uuid) throws Exception; + public abstract MetaDataEntity getMetadata(String token, String uuid) th= rows Exception; =20 /** * Retrieve versions of an element
@@ -62,7 +62,7 @@ *=20 * @throws Exception */ - public abstract List getVersions(String uuid) throws Exception; + public abstract List getVersions(String token, String uuid) thr= ows Exception; =20 /** * Retrieve an element in a specific version @@ -72,7 +72,7 @@ * @return * @throws Exception */ - public abstract MetaDataEntity getMetadata(String uuid, Version version) + public abstract MetaDataEntity getMetadata(String token, String uuid, Ve= rsion version) throws Exception; =20 /** @@ -85,7 +85,7 @@ * @return Data stream * @throws Exception */ - public abstract InputStream retrieveData(MetaDataEntity entity, String f= ield) + public abstract InputStream retrieveData(String token, MetaDataEntity en= tity, String field) throws Exception; =20 /** @@ -96,7 +96,7 @@ * @return * @throws Exception */ - public abstract int findFullTextCount(String query, boolean onlyLatest) + public abstract int findFullTextCount(String token, String query, boolea= n onlyLatest) throws Exception; =20 /** @@ -110,7 +110,7 @@ * @return * @throws Exception */ - public abstract MetaDataEntity[] findFullText(String query, + public abstract MetaDataEntity[] findFullText(String token, String query, boolean onlyLatest, int indexStart, int count, int dateOrder) throws Exception; =20 @@ -125,7 +125,7 @@ * @return * @throws Exception */ - public abstract MetaDataEntity[] findElementsByType(String type, + public abstract MetaDataEntity[] findElementsByType(String token, String= type, boolean onlyLatest, int start, int count, int dateOrder) throws Exception; =20 @@ -137,7 +137,7 @@ * @return * @throws Exception */ - public abstract int findElementsByTypeCount(String type, boolean onlyLat= est) + public abstract int findElementsByTypeCount(String token, String type, b= oolean onlyLatest) throws Exception; =20 /** @@ -146,7 +146,7 @@ * @param uuid * @throws Exception */ - public abstract void deleteElements(String uuid) throws Exception; + public abstract void deleteElements(String token, String uuid) throws Ex= ception; =20 /** * Delete one element @@ -155,7 +155,7 @@ * @param version * @throws Exception */ - public abstract void deleteElement(String uuid, Version version) + public abstract void deleteElement(String token, String uuid, Version ve= rsion) throws Exception; =20 /** Modified: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/st= orage/engine/StorageEngineImpl.java =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/= engine/StorageEngineImpl.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/= engine/StorageEngineImpl.java 2008-01-22 18:37:33 UTC (rev 419) @@ -81,7 +81,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#saveElem= ent(fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity, java.util.Ma= p) */ - public void saveElement(MetaDataEntity element, + public void saveElement(String token, MetaDataEntity element, Map attachments) throws Exception { =20 // Save all attachments in system @@ -124,7 +124,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getMetad= ata(java.lang.String) */ - public MetaDataEntity getMetadata(String uuid) throws Exception { + public MetaDataEntity getMetadata(String token, String uuid) throws Exce= ption { MetaDataEntity mde =3D null; Set set =3D database.findElementsById(uuid, true); if (!set.isEmpty()) { @@ -136,14 +136,14 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getVersi= ons(java.lang.String) */ - public List getVersions(String uuid) throws Exception { + public List getVersions(String token, String uuid) throws Excep= tion { return database.getVersions(uuid); } =20 /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getMetad= ata(java.lang.String, fr.cemagref.simexplorer.is.entities.metadata.Version) */ - public MetaDataEntity getMetadata(String uuid, Version version) + public MetaDataEntity getMetadata(String token, String uuid, Version ver= sion) throws Exception { MetaDataEntity mde =3D database.getElement(uuid, version); return mde; @@ -152,7 +152,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#retrieve= Data(fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity, java.lang.S= tring) */ - public InputStream retrieveData(MetaDataEntity entity, String field) + public InputStream retrieveData(String token, MetaDataEntity entity, Str= ing field) throws Exception { InputStream result =3D attachmentHandler.retrieveData(entity, field); return result; @@ -161,7 +161,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findFull= TextCount(java.lang.String, boolean) */ - public int findFullTextCount(String query, boolean onlyLatest) + public int findFullTextCount(String token, String query, boolean onlyLat= est) throws Exception { return database.findElementsByContentSearchCount(query, onlyLatest); } @@ -169,7 +169,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findFull= Text(java.lang.String, boolean, int, int, int) */ - public MetaDataEntity[] findFullText(String query, boolean onlyLatest, + public MetaDataEntity[] findFullText(String token, String query, boolean= onlyLatest, int indexStart, int count, int dateOrder) throws Exception { MetaDataEntity[] result =3D database.findElementsByContentSearch(que= ry, onlyLatest, indexStart, count, dateOrder).toArray( @@ -180,7 +180,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findElem= entsByType(java.lang.String, boolean, int, int, int) */ - public MetaDataEntity[] findElementsByType(String type, boolean onlyLate= st, + public MetaDataEntity[] findElementsByType(String token, String type, bo= olean onlyLatest, int start, int count, int dateOrder) throws Exception { MetaDataEntity[] result =3D database.findElementsByType(type, onlyLa= test, start, count, dateOrder).toArray(new MetaDataEntity[0]); @@ -190,7 +190,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findElem= entsByTypeCount(java.lang.String, boolean) */ - public int findElementsByTypeCount(String type, boolean onlyLatest) + public int findElementsByTypeCount(String token, String type, boolean on= lyLatest) throws Exception { return database.findElementsByTypeCount(type, onlyLatest); } @@ -200,18 +200,18 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#deleteEl= ements(java.lang.String) */ - public void deleteElements(String uuid) throws Exception { - List versions =3D getVersions(uuid); + public void deleteElements(String token, String uuid) throws Exception { + List versions =3D getVersions(token, uuid); for (Version version : versions) { - deleteElement(uuid, version); + deleteElement(token, uuid, version); } } =20 /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#deleteEl= ement(java.lang.String, fr.cemagref.simexplorer.is.entities.metadata.Version) */ - public void deleteElement(String uuid, Version version) throws Exception= { - MetaDataEntity element =3D getMetadata(uuid, version); + public void deleteElement(String token, String uuid, Version version) th= rows Exception { + MetaDataEntity element =3D getMetadata(token, uuid, version); Map attachments =3D element.getAttachments(); for (Map.Entry entry : attachments.entrySet()) { attachmentHandler.deleteData(element, entry.getKey()); --===============6289923983363286894==--