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

Update proto

parent 2fbf203a
No related branches found
No related tags found
2 merge requests!58REL: prepare release 0.7.2,!45F grpc f acm
Pipeline #18922 passed
caosdb-proto @ 5d5e3170
Subproject commit 2f3e4ad1cf515450fcfedb300f66198b82122b7e
Subproject commit 5d5e317091b1c8f03466ce701bbe6eba70cd4458
......@@ -31,6 +31,7 @@ import org.caosdb.api.entity.v1.DataType;
import org.caosdb.api.entity.v1.Entity;
import org.caosdb.api.entity.v1.Entity.Builder;
import org.caosdb.api.entity.v1.EntityACL;
import org.caosdb.api.entity.v1.EntityAclPermission;
import org.caosdb.api.entity.v1.EntityPermissionRule;
import org.caosdb.api.entity.v1.EntityPermissionRuleCapability;
import org.caosdb.api.entity.v1.EntityResponse;
......@@ -496,25 +497,21 @@ public class CaosDBToGrpcConverters {
builder.addAllRules(convert(e.getEntityACL(), true));
}
builder.addAllRules(convert(org.caosdb.server.permissions.EntityACL.GLOBAL_PERMISSIONS, false));
builder.addAllPermissions(getCurrentACLPermissions(e));
// TODO errors?
EntityAclPermission entityAclPermission = getCurrentACLPermission(e);
if (entityAclPermission != null) {
builder.setPermission(entityAclPermission);
}
return builder.build();
}
private Iterable<? extends org.caosdb.api.entity.v1.EntityPermission> getCurrentACLPermissions(
EntityInterface e) {
List<org.caosdb.api.entity.v1.EntityPermission> result = new LinkedList<>();
if (e.hasPermission(EntityPermission.EDIT_ACL)) {
org.caosdb.api.entity.v1.EntityPermission.Builder builder =
org.caosdb.api.entity.v1.EntityPermission.newBuilder();
result.add(builder.setName(EntityPermission.EDIT_ACL.getShortName()).build());
}
private org.caosdb.api.entity.v1.EntityAclPermission getCurrentACLPermission(EntityInterface e) {
if (e.hasPermission(EntityPermission.EDIT_PRIORITY_ACL)) {
org.caosdb.api.entity.v1.EntityPermission.Builder builder =
org.caosdb.api.entity.v1.EntityPermission.newBuilder();
result.add(builder.setName(EntityPermission.EDIT_PRIORITY_ACL.getShortName()).build());
return EntityAclPermission.ENTITY_ACL_PERMISSION_EDIT_PRIORITY_ACL;
}
return result;
if (e.hasPermission(EntityPermission.EDIT_ACL)) {
return EntityAclPermission.ENTITY_ACL_PERMISSION_EDIT_ACL;
}
return null;
}
private Iterable<? extends EntityPermissionRule> convert(
......@@ -540,8 +537,7 @@ public class CaosDBToGrpcConverters {
List<org.caosdb.api.entity.v1.EntityPermission> result = new LinkedList<>();
for (EntityPermission p : aci.getPermission()) {
result.add(
org.caosdb.api.entity.v1.EntityPermission.newBuilder().setName(p.getShortName()).build());
result.add(p.getMapping());
}
return result;
}
......
......@@ -363,12 +363,14 @@ public class GrpcToCaosDBConverters {
return fac.remove(org.caosdb.server.permissions.EntityACL.GLOBAL_PERMISSIONS).create();
}
private String[] convert(List<EntityPermission> permissionsList) {
ArrayList<String> result = new ArrayList<>(permissionsList.size());
private org.caosdb.server.permissions.EntityPermission[] convert(
List<EntityPermission> permissionsList) {
ArrayList<org.caosdb.server.permissions.EntityPermission> result =
new ArrayList<>(permissionsList.size());
permissionsList.forEach(
(p) -> {
result.add(p.getName());
result.add(org.caosdb.server.permissions.EntityPermission.getEntityPermission(p));
});
return result.toArray(new String[0]);
return result.toArray(new org.caosdb.server.permissions.EntityPermission[0]);
}
}
......@@ -37,6 +37,7 @@ public class EntityPermission extends Permission {
private static final long serialVersionUID = -8935713878537140286L;
private static List<EntityPermission> instances = new ArrayList<>();
private final int bitNumber;
private final org.caosdb.api.entity.v1.EntityPermission mapping;
public static final Permission EDIT_PRIORITY_ACL =
new Permission(
"ADMIN:ENTITY:EDIT:PRIORITY_ACL",
......@@ -61,9 +62,14 @@ public class EntityPermission extends Permission {
};
}
private EntityPermission(final String shortName, final String description, final int bitNumber) {
private EntityPermission(
final String shortName,
final String description,
final int bitNumber,
org.caosdb.api.entity.v1.EntityPermission mapping) {
super(shortName, description);
this.bitNumber = bitNumber;
this.mapping = mapping;
if (bitNumber > 61) {
throw new CaosDBException(
"This bitNumber is too big. This implementation only handles bitNumbers up to 61.");
......@@ -106,6 +112,16 @@ public class EntityPermission extends Permission {
throw new IllegalArgumentException("Permission is not defined.");
}
public static EntityPermission getEntityPermission(
final org.caosdb.api.entity.v1.EntityPermission permission) {
for (final EntityPermission p : instances) {
if (p.getMapping() == permission) {
return p;
}
}
throw new IllegalArgumentException("Permission not found." + permission.name());
}
public long getBitSet() {
return (long) Math.pow(2, getBitNumber());
}
......@@ -120,78 +136,153 @@ public class EntityPermission extends Permission {
return ret;
}
public org.caosdb.api.entity.v1.EntityPermission getMapping() {
return mapping;
}
public static final EntityPermission RETRIEVE_ENTITY =
new EntityPermission(
"RETRIEVE:ENTITY",
"Permission to retrieve the full entity (name, description, data type, ...) with all parents and properties (unless prohibited by another rule on the property level).",
4);
4,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_RETRIEVE_ENTITY);
public static final EntityPermission RETRIEVE_ACL =
new EntityPermission(
"RETRIEVE:ACL", "Permission to retrieve the full and final ACL of this entity.", 5);
"RETRIEVE:ACL",
"Permission to retrieve the full and final ACL of this entity.",
5,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_RETRIEVE_ACL);
public static final EntityPermission RETRIEVE_HISTORY =
new EntityPermission(
"RETRIEVE:HISTORY", "Permission to retrieve the history of this entity.", 6);
"RETRIEVE:HISTORY",
"Permission to retrieve the history of this entity.",
6,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_RETRIEVE_HISTORY);
public static final EntityPermission RETRIEVE_OWNER =
new EntityPermission(
"RETRIEVE:OWNER", "Permission to retrieve the owner(s) of this entity.", 9);
"RETRIEVE:OWNER",
"Permission to retrieve the owner(s) of this entity.",
9,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_RETRIEVE_OWNER);
public static final EntityPermission RETRIEVE_FILE =
new EntityPermission(
"RETRIEVE:FILE", "Permission to download the file belonging to this entity.", 10);
"RETRIEVE:FILE",
"Permission to download the file belonging to this entity.",
10,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_RETRIEVE_FILE);
public static final EntityPermission DELETE =
new EntityPermission("DELETE", "Permission to delete an entity.", 1);
new EntityPermission(
"DELETE",
"Permission to delete an entity.",
1,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_DELETE);
public static final EntityPermission EDIT_ACL =
new EntityPermission(
"EDIT:ACL",
"Permission to change the user-specified part of this entity's ACL. Roles with this Permission are called 'Owners'.",
0);
0,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_EDIT_ACL);
public static final EntityPermission UPDATE_DESCRIPTION =
new EntityPermission(
"UPDATE:DESCRIPTION", "Permission to change the value of this entity.", 11);
"UPDATE:DESCRIPTION",
"Permission to change the value of this entity.",
11,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_DESCRIPTION);
public static final EntityPermission UPDATE_VALUE =
new EntityPermission("UPDATE:VALUE", "Permission to change the value of this entity.", 12);
new EntityPermission(
"UPDATE:VALUE",
"Permission to change the value of this entity.",
12,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_VALUE);
public static final EntityPermission UPDATE_ROLE =
new EntityPermission("UPDATE:ROLE", "Permission to change the role of this entity.", 13);
new EntityPermission(
"UPDATE:ROLE",
"Permission to change the role of this entity.",
13,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_ROLE);
public static final EntityPermission UPDATE_REMOVE_PARENT =
new EntityPermission(
"UPDATE:PARENT:REMOVE", "Permission to remove parents from this entity.", 14);
"UPDATE:PARENT:REMOVE",
"Permission to remove parents from this entity.",
14,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_REMOVE_PARENT);
public static final EntityPermission UPDATE_ADD_PARENT =
new EntityPermission("UPDATE:PARENT:ADD", "Permission to add a parent to this entity.", 15);
new EntityPermission(
"UPDATE:PARENT:ADD",
"Permission to add a parent to this entity.",
15,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_ADD_PARENT);
public static final EntityPermission UPDATE_REMOVE_PROPERTY =
new EntityPermission(
"UPDATE:PROPERTY:REMOVE", "Permission to remove properties from this entity.", 16);
"UPDATE:PROPERTY:REMOVE",
"Permission to remove properties from this entity.",
16,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_REMOVE_PROPERTY);
public static final EntityPermission UPDATE_ADD_PROPERTY =
new EntityPermission(
"UPDATE:PROPERTY:ADD", "Permission to add a property to this entity.", 17);
"UPDATE:PROPERTY:ADD",
"Permission to add a property to this entity.",
17,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_ADD_PROPERTY);
public static final EntityPermission UPDATE_NAME =
new EntityPermission("UPDATE:NAME", "Permission to change the name of this entity.", 19);
new EntityPermission(
"UPDATE:NAME",
"Permission to change the name of this entity.",
19,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_NAME);
public static final EntityPermission UPDATE_DATA_TYPE =
new EntityPermission(
"UPDATE:DATA_TYPE", "Permission to change the data type of this entity.", 20);
"UPDATE:DATA_TYPE",
"Permission to change the data type of this entity.",
20,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_DATA_TYPE);
public static final EntityPermission UPDATE_REMOVE_FILE =
new EntityPermission(
"UPDATE:FILE:REMOVE", "Permission to delete the file of this entity.", 21);
"UPDATE:FILE:REMOVE",
"Permission to delete the file of this entity.",
21,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_REMOVE_FILE);
public static final EntityPermission UPDATE_ADD_FILE =
new EntityPermission("UPDATE:FILE:ADD", "Permission to set a file for this entity.", 22);
new EntityPermission(
"UPDATE:FILE:ADD",
"Permission to set a file for this entity.",
22,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_ADD_FILE);
public static final EntityPermission UPDATE_MOVE_FILE =
new EntityPermission(
"UPDATE:FILE:MOVE", "Permission to move an existing file to a new location.", 23);
"UPDATE:FILE:MOVE",
"Permission to move an existing file to a new location.",
23,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_MOVE_FILE);
public static final EntityPermission USE_AS_REFERENCE =
new EntityPermission(
"USE:AS_REFERENCE", "Permission to refer to this entity via a reference property.", 24);
"USE:AS_REFERENCE",
"Permission to refer to this entity via a reference property.",
24,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_USE_AS_REFERENCE);
public static final EntityPermission USE_AS_PROPERTY =
new EntityPermission(
"USE:AS_PROPERTY", "Permission to implement this entity as a property.", 25);
"USE:AS_PROPERTY",
"Permission to implement this entity as a property.",
25,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_USE_AS_PROPERTY);
public static final EntityPermission USE_AS_PARENT =
new EntityPermission(
"USE:AS_PARENT", "Permission to use this entity as a super type for other entities.", 26);
"USE:AS_PARENT",
"Permission to use this entity as a super type for other entities.",
26,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_USE_AS_PARENT);
public static final EntityPermission USE_AS_DATA_TYPE =
new EntityPermission(
"USE:AS_DATA_TYPE",
"Permission to use this entity as a data type for reference properties.",
27);
27,
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_USE_AS_DATA_TYPE);
public static final EntityPermission UPDATE_QUERY_TEMPLATE_DEFINITION =
new EntityPermission(
"UPDATE:QUERY_TEMPLATE_DEFINITION",
"Permission to update the query template definition of this QueryTemplate",
28);
28,
org.caosdb.api.entity.v1.EntityPermission
.ENTITY_PERMISSION_UPDATE_QUERY_TEMPLATE_DEFINITION);
}
package org.caosdb.server.permissions;
import static org.junit.Assert.*;
import org.junit.Test;
public class EntityPermissionTest {
@Test
public void testGRPCMapping() {
assertEquals(
EntityPermission.EDIT_ACL.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_EDIT_ACL);
assertEquals(
EntityPermission.DELETE.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_DELETE);
assertEquals(
EntityPermission.USE_AS_DATA_TYPE.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_USE_AS_DATA_TYPE);
assertEquals(
EntityPermission.USE_AS_PARENT.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_USE_AS_PARENT);
assertEquals(
EntityPermission.USE_AS_PROPERTY.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_USE_AS_PROPERTY);
assertEquals(
EntityPermission.USE_AS_REFERENCE.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_USE_AS_REFERENCE);
assertEquals(
EntityPermission.RETRIEVE_ENTITY.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_RETRIEVE_ENTITY);
assertEquals(
EntityPermission.RETRIEVE_ACL.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_RETRIEVE_ACL);
assertEquals(
EntityPermission.RETRIEVE_OWNER.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_RETRIEVE_OWNER);
assertEquals(
EntityPermission.RETRIEVE_HISTORY.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_RETRIEVE_HISTORY);
assertEquals(
EntityPermission.RETRIEVE_FILE.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_RETRIEVE_FILE);
assertEquals(
EntityPermission.UPDATE_VALUE.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_VALUE);
assertEquals(
EntityPermission.UPDATE_DESCRIPTION.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_DESCRIPTION);
assertEquals(
EntityPermission.UPDATE_DATA_TYPE.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_DATA_TYPE);
assertEquals(
EntityPermission.UPDATE_NAME.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_NAME);
assertEquals(
EntityPermission.UPDATE_QUERY_TEMPLATE_DEFINITION.getMapping(),
org.caosdb.api.entity.v1.EntityPermission
.ENTITY_PERMISSION_UPDATE_QUERY_TEMPLATE_DEFINITION);
assertEquals(
EntityPermission.UPDATE_ROLE.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_ROLE);
assertEquals(
EntityPermission.UPDATE_ADD_PARENT.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_ADD_PARENT);
assertEquals(
EntityPermission.UPDATE_REMOVE_PARENT.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_REMOVE_PARENT);
assertEquals(
EntityPermission.UPDATE_ADD_PROPERTY.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_ADD_PROPERTY);
assertEquals(
EntityPermission.UPDATE_REMOVE_PROPERTY.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_REMOVE_PROPERTY);
assertEquals(
EntityPermission.UPDATE_ADD_FILE.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_ADD_FILE);
assertEquals(
EntityPermission.UPDATE_REMOVE_FILE.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_REMOVE_FILE);
assertEquals(
EntityPermission.UPDATE_MOVE_FILE.getMapping(),
org.caosdb.api.entity.v1.EntityPermission.ENTITY_PERMISSION_UPDATE_MOVE_FILE);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment