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==--