diff --git a/src/main/java/org/caosdb/server/jobs/core/EntityStateJob.java b/src/main/java/org/caosdb/server/jobs/core/EntityStateJob.java index 16fe593654aad760edc2b8efc2e6889222bfa78e..2aa024ccda49b25cddbd6cd0dd0a77c5eaed7a25 100644 --- a/src/main/java/org/caosdb/server/jobs/core/EntityStateJob.java +++ b/src/main/java/org/caosdb/server/jobs/core/EntityStateJob.java @@ -334,7 +334,10 @@ public abstract class EntityStateJob extends EntityJob { for (EntityACI aci : entityACL.getRules()) { if (aci.getResponsibleAgent().toString().startsWith(ENTITY_STATE_ROLE_MARKER)) { int end = aci.getResponsibleAgent().toString().length() - 1; - String role = aci.getResponsibleAgent().toString().substring(7, end); + String role = + aci.getResponsibleAgent() + .toString() + .substring(ENTITY_STATE_ROLE_MARKER.length(), end); rules.add( new EntityACI(org.caosdb.server.permissions.Role.create(role), aci.getBitSet())); } diff --git a/src/main/java/org/caosdb/server/permissions/EntityACL.java b/src/main/java/org/caosdb/server/permissions/EntityACL.java index a01e7df07dd137cf72b8cdbe112248c038fbfd29..3b02089307f9b9564fd4504490df7cbe6166f1c1 100644 --- a/src/main/java/org/caosdb/server/permissions/EntityACL.java +++ b/src/main/java/org/caosdb/server/permissions/EntityACL.java @@ -25,6 +25,7 @@ package org.caosdb.server.permissions; import static org.caosdb.server.permissions.Role.OTHER_ROLE; import static org.caosdb.server.permissions.Role.OWNER_ROLE; + import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -81,7 +82,7 @@ public class EntityACL { private static EntityACL create(final List<PermissionRule> defaultPermissionRules) { final EntityACLFactory factory = new EntityACLFactory(); for (final PermissionRule rule : defaultPermissionRules) { - if(!rule.getRawPermission().startsWith("ENTITY:*")) { + if (!rule.getRawPermission().startsWith("ENTITY:*")) { continue; } String permission; @@ -110,7 +111,7 @@ public class EntityACL { final File file = new File( CaosDBServer.getServerProperty(ServerProperties.KEY_GLOBAL_ENTITY_PERMISSIONS_FILE) - .trim()); + .trim()); try { final Document doc = saxBuilder.build(file); diff --git a/src/main/java/org/caosdb/server/permissions/PermissionRule.java b/src/main/java/org/caosdb/server/permissions/PermissionRule.java index cd2dd2372f81b42a7691cbb46f73670d9fb92326..ffb3ac221746c0a04185bd3cc88cbe698c4e4e10 100644 --- a/src/main/java/org/caosdb/server/permissions/PermissionRule.java +++ b/src/main/java/org/caosdb/server/permissions/PermissionRule.java @@ -176,19 +176,20 @@ public class PermissionRule { final Yaml yml = new Yaml(); final Iterator<Object> all = yml.loadAll(in).iterator(); final List<PermissionRule> result = new ArrayList<>(); - while(all.hasNext()) { + while (all.hasNext()) { final Object ymlObj = all.next(); - if(ymlObj instanceof Map && ((Map) ymlObj).containsKey("permission rules")) { + if (ymlObj instanceof Map && ((Map) ymlObj).containsKey("permission rules")) { final Object permission_rules = ((Map) ymlObj).get("permission rules"); - if(!((Map) permission_rules).containsKey("_version")) { + if (!((Map) permission_rules).containsKey("_version")) { // TODO handle warning: no version - } else if( !((Map) permission_rules).get("_version").toString().equals("1.0")) { + } else if (!((Map) permission_rules).get("_version").toString().equals("1.0")) { // TODO handle error: wrong version of this file } final Set<String> roles = ((Map) permission_rules).keySet(); for (final String role : roles) { - if(!role.equals("_version")) { - result.addAll(loadDefaultPermissionRules(role, (Map) ((Map) permission_rules).get(role))); + if (!role.equals("_version")) { + result.addAll( + loadDefaultPermissionRules(role, (Map) ((Map) permission_rules).get(role))); } } } @@ -197,42 +198,47 @@ public class PermissionRule { } @SuppressWarnings({"rawtypes", "unchecked"}) - private static List<PermissionRule> loadDefaultPermissionRules(final String role, final Map<Object, Object> rules) { + private static List<PermissionRule> loadDefaultPermissionRules( + final String role, final Map<Object, Object> rules) { final List<PermissionRule> result = new ArrayList<>(); Object source = rules.get("grant"); int found = 0; // count the sections we processed here - if(source != null) { + if (source != null) { found++; addRules(role, true, (List) source, result); } source = rules.get("deny"); - if(source != null) { + if (source != null) { found++; addRules(role, false, (List) source, result); } - if(rules.keySet().size() - found > 0) { + if (rules.keySet().size() - found > 0) { // TODO handle error: should only contain grand and/or deny } return result; } @SuppressWarnings("rawtypes") - private static void addRules(final String role, final boolean isGrant, final List<Object> source, final List<PermissionRule> target) { - for(final Object single_rule : source) { + private static void addRules( + final String role, + final boolean isGrant, + final List<Object> source, + final List<PermissionRule> target) { + for (final Object single_rule : source) { boolean isPriority = false; String permission; - if(single_rule instanceof String) { + if (single_rule instanceof String) { permission = (String) single_rule; } else { - if(((Map) single_rule).keySet().size() > 2) { + if (((Map) single_rule).keySet().size() > 2) { // TODO handle error, too many keys - } else if(((Map) single_rule).containsKey("priority")) { + } else if (((Map) single_rule).containsKey("priority")) { isPriority = (boolean) ((Map) single_rule).get("priority"); - } else if(((Map) single_rule).keySet().size() != 1) { + } else if (((Map) single_rule).keySet().size() != 1) { // TODO handle error, priority not there, so we expect only one key, "permission". } - if(!((Map) single_rule).containsKey("priority")) { + if (!((Map) single_rule).containsKey("priority")) { // TODO handle error, permission key not there. } permission = (String) ((Map) single_rule).get("permission"); diff --git a/src/test/java/org/caosdb/server/permissions/EntityACLTest.java b/src/test/java/org/caosdb/server/permissions/EntityACLTest.java index 3cf201561ad51b408824fcc78d27757c9c100e9e..3cb976d2d1a8d696ab3b2a696c39aa377c242f26 100644 --- a/src/test/java/org/caosdb/server/permissions/EntityACLTest.java +++ b/src/test/java/org/caosdb/server/permissions/EntityACLTest.java @@ -26,6 +26,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; + import java.io.IOException; import java.util.BitSet; import java.util.HashSet; @@ -84,7 +85,8 @@ public class EntityACLTest { } @Override - public HashSet<PermissionRule> retrievePermissionRule(final String role) throws TransactionException { + public HashSet<PermissionRule> retrievePermissionRule(final String role) + throws TransactionException { return new HashSet<>(); } } @@ -340,14 +342,16 @@ public class EntityACLTest { public void testFactory() { final AbstractEntityACLFactory<EntityACL> f = new EntityACLFactory(); - final org.caosdb.server.permissions.Role role1 = org.caosdb.server.permissions.Role.create("role1"); + final org.caosdb.server.permissions.Role role1 = + org.caosdb.server.permissions.Role.create("role1"); final Config config1 = new Config(); config1.setRoles(new String[] {role1.toString()}); final OneTimeAuthenticationToken token1 = OneTimeAuthenticationToken.generate(config1); final Subject user1 = SecurityUtils.getSecurityManager().createSubject(null); user1.login(token1); - final org.caosdb.server.permissions.Role role2 = org.caosdb.server.permissions.Role.create("role2"); + final org.caosdb.server.permissions.Role role2 = + org.caosdb.server.permissions.Role.create("role2"); final Config config2 = new Config(); config2.setRoles(new String[] {role2.toString()}); final OneTimeAuthenticationToken token2 = OneTimeAuthenticationToken.generate(config2); diff --git a/src/test/java/org/caosdb/server/resource/TestScriptingResource.java b/src/test/java/org/caosdb/server/resource/TestScriptingResource.java index 6cfa5722e003a39d7ea94a94286fee4e29b20c06..e5bfa0f5a6a75843e7062987a2729714596945da 100644 --- a/src/test/java/org/caosdb/server/resource/TestScriptingResource.java +++ b/src/test/java/org/caosdb/server/resource/TestScriptingResource.java @@ -24,6 +24,7 @@ package org.caosdb.server.resource; import static org.junit.Assert.assertEquals; + import java.io.IOException; import java.util.Date; import java.util.HashSet; @@ -91,11 +92,12 @@ public class TestScriptingResource { public RetrievePermissionRules(final Access a) {} @Override - public HashSet<PermissionRule> retrievePermissionRule(final String role) throws TransactionException { + public HashSet<PermissionRule> retrievePermissionRule(final String role) + throws TransactionException { final HashSet<PermissionRule> result = new HashSet<>(); result.add( - new PermissionRule(role, - true, false, ScriptingPermissions.PERMISSION_EXECUTION("anonymous_ok"))); + new PermissionRule( + role, true, false, ScriptingPermissions.PERMISSION_EXECUTION("anonymous_ok"))); return result; } @@ -160,29 +162,29 @@ public class TestScriptingResource { ScriptingResource resource = new ScriptingResource() { - @Override - public int callScript( - final java.util.List<String> invokation, - final Integer timeout_ms, - final java.util.List<org.caosdb.server.entity.FileProperties> files, - final Object authToken) + @Override + public int callScript( + final java.util.List<String> invokation, + final Integer timeout_ms, + final java.util.List<org.caosdb.server.entity.FileProperties> files, + final Object authToken) throws Message { - if (invokation.get(0).equals("anonymous_ok")) { - return 0; - } - return -1; - }; - - @Override - public Element generateRootElement(final ServerSideScriptingCaller caller) { - return new Element("OK"); - }; - - @Override - public Object generateAuthToken(final String purpose) { - return ""; - } - }; + if (invokation.get(0).equals("anonymous_ok")) { + return 0; + } + return -1; + }; + + @Override + public Element generateRootElement(final ServerSideScriptingCaller caller) { + return new Element("OK"); + }; + + @Override + public Object generateAuthToken(final String purpose) { + return ""; + } + }; @Test public void testUnsupportedMediaType() {