Skip to content
Snippets Groups Projects
Verified Commit 862e5065 authored by Timm Fitschen's avatar Timm Fitschen
Browse files

WIP: Entity ACL GRPC

parent 978a8328
No related branches found
No related tags found
2 merge requests!58REL: prepare release 0.7.2,!45F grpc f acm
package org.caosdb.server.transaction; package org.caosdb.server.transaction;
import java.util.List; import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.caosdb.server.accessControl.ACMPermissions;
import org.caosdb.server.database.backend.transaction.ListUsers; import org.caosdb.server.database.backend.transaction.ListUsers;
import org.caosdb.server.database.proto.ProtoUser; import org.caosdb.server.database.proto.ProtoUser;
...@@ -10,7 +15,17 @@ public class ListUsersTransaction extends AccessControlTransaction { ...@@ -10,7 +15,17 @@ public class ListUsersTransaction extends AccessControlTransaction {
@Override @Override
protected void transaction() throws Exception { protected void transaction() throws Exception {
users = execute(new ListUsers(), getAccess()).getUsers(); Subject currentUser = SecurityUtils.getSubject();
users = execute(new ListUsers(), getAccess()).getUsers().stream().filter(user -> currentUser.isPermitted(ACMPermissions.PERMISSION_RETRIEVE_USER_INFO(user.realm, user.name))
).collect(Collectors.toList());
// remove roles
for(ProtoUser user : users) {
if(!currentUser.isPermitted(ACMPermissions.PERMISSION_RETRIEVE_USER_ROLES(user.realm, user.name))) {
user.roles = null;
}
}
} }
public List<ProtoUser> getUsers() { public List<ProtoUser> getUsers() {
......
package org.caosdb.server.transaction; package org.caosdb.server.transaction;
import com.google.protobuf.ProtocolStringList;
import java.util.UUID; import java.util.UUID;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.caosdb.server.database.backend.transaction.RetrieveEntityACLTransaction; import org.caosdb.server.database.backend.transaction.RetrieveEntityACLTransaction;
...@@ -8,12 +9,13 @@ import org.caosdb.server.entity.EntityInterface; ...@@ -8,12 +9,13 @@ import org.caosdb.server.entity.EntityInterface;
import org.caosdb.server.entity.container.TransactionContainer; import org.caosdb.server.entity.container.TransactionContainer;
import org.caosdb.server.permissions.EntityACL; import org.caosdb.server.permissions.EntityACL;
import org.caosdb.server.permissions.EntityPermission; import org.caosdb.server.permissions.EntityPermission;
import com.google.protobuf.ProtocolStringList;
public class RetrieveACL extends Transaction<TransactionContainer> { public class RetrieveACL extends Transaction<TransactionContainer> {
public RetrieveACL(ProtocolStringList idList) { public RetrieveACL(ProtocolStringList idList) {
super(new TransactionContainer(SecurityUtils.getSubject(), System.currentTimeMillis(), UUID.randomUUID().toString())); super(
new TransactionContainer(
SecurityUtils.getSubject(), System.currentTimeMillis(), UUID.randomUUID().toString()));
for (String strId : idList) { for (String strId : idList) {
getContainer().add(new Entity(Integer.parseInt(strId))); getContainer().add(new Entity(Integer.parseInt(strId)));
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment