/** * Returns a sorted set of rules associated to the role * * @param role */ public SortedSet<DataAccessRule> getRulesAssociatedWithRole(String role) { SortedSet<DataAccessRule> result = new TreeSet<DataAccessRule>(); for (DataAccessRule rule : getRules()) if (rule.getRoles().contains(role)) result.add(rule); return result; } }
+ " is overriding another rule targetting the same resource"); node.setAuthorizedRoles(accessMode, rule.getRoles());
protected void addLayerAccessRule( String workspace, String layer, AccessMode mode, String... roles) throws IOException { DataAccessRuleDAO dao = DataAccessRuleDAO.get(); DataAccessRule rule = new DataAccessRule(); rule.setRoot(workspace); rule.setLayer(layer); rule.setAccessMode(mode); rule.getRoles().addAll(Arrays.asList(roles)); dao.addRule(rule); dao.storeRules(); }
List<String> lookupWorkspaceAdminRoles() { List<String> roles = new ArrayList<String>(); DataAccessRuleDAO dao = DataAccessRuleDAO.get(); for (DataAccessRule rule : dao.getRules()) { if (rule.getAccessMode() == AccessMode.ADMIN) { roles.addAll(rule.getRoles()); } } return roles; } }
@Override public void onSubmit() { DataAccessRule rule = (DataAccessRule) getForm().getModelObject(); if (rolesFormComponent.isHasAnyRole()) { rule.getRoles().clear(); rule.getRoles().add(GeoServerRole.ANY_ROLE.getAuthority()); } if (globalGroupRule.getModelObject()) { // just to be on the safe side rule.setLayer(null); } onFormSubmit(rule); } });
@Override protected void onFormSubmit(DataAccessRule rule) { try { DataAccessRuleDAO dao = DataAccessRuleDAO.get(); //update original orig.setWorkspace(rule.getWorkspace()); orig.setLayer(rule.getLayer()); orig.setAccessMode(rule.getAccessMode()); orig.getRoles().clear(); orig.getRoles().addAll(rule.getRoles()); dao.storeRules(); doReturn(DataSecurityPage.class); } catch (Exception e) { LOGGER.log(Level.SEVERE, "Error occurred while saving rule ", e); error(new ParamResourceModel("saveError", getPage(), e.getMessage())); } }
@Override protected void onFormSubmit(DataAccessRule rule) { try { DataAccessRuleDAO dao = DataAccessRuleDAO.get(); //update original orig.setWorkspace(rule.getWorkspace()); orig.setLayer(rule.getLayer()); orig.setAccessMode(rule.getAccessMode()); orig.getRoles().clear(); orig.getRoles().addAll(rule.getRoles()); dao.storeRules(); doReturn(DataSecurityPage.class); } catch (Exception e) { LOGGER.log(Level.SEVERE, "Error occurred while saving rule ", e); error(new ParamResourceModel("saveError", getPage(), e.getMessage())); } }
@Override protected void onFormSubmit(DataAccessRule rule) { try { DataAccessRuleDAO dao = DataAccessRuleDAO.get(); // we cannot update the original because it might have been serialized // and thus detached, we'll update the rule that is the same as the original one instead dao.getRules() .forEach( r -> { if (r.equals(orig)) { r.setRoot(rule.getRoot()); r.setGlobalGroupRule(rule.isGlobalGroupRule()); r.setLayer(rule.getLayer()); r.setAccessMode(rule.getAccessMode()); r.getRoles().clear(); r.getRoles().addAll(rule.getRoles()); } }); dao.storeRules(); doReturn(DataSecurityPage.class); } catch (Exception e) { LOGGER.log(Level.SEVERE, "Error occurred while saving rule ", e); error(new ParamResourceModel("saveError", getPage(), e.getMessage())); } } }
expect(dataAccessRule.compareTo(dataAccessRule)).andReturn(0).anyTimes(); expect(dataAccessRule.getKey()).andReturn("foo").anyTimes(); expect(dataAccessRule.getRoles()) .andReturn(new TreeSet<String>(Arrays.asList("role1"))) .anyTimes();
rule.setRoot("cdf"); rule.setAccessMode(AccessMode.READ); rule.getRoles().add("readcdf"); ruleDao.addRule(rule); rule.setRoot("cdf"); rule.setAccessMode(AccessMode.WRITE); rule.getRoles().add("writecdf"); ruleDao.addRule(rule); rule.setRoot("cdf"); rule.setAccessMode(AccessMode.ADMIN); rule.getRoles().add("admincdf"); ruleDao.addRule(rule); rule.setRoot("cite"); rule.setAccessMode(AccessMode.READ); rule.getRoles().add("readcite"); ruleDao.addRule(rule); rule.setRoot("cite"); rule.setAccessMode(AccessMode.WRITE); rule.getRoles().add("writecite"); ruleDao.addRule(rule); rule.setRoot("cite"); rule.setAccessMode(AccessMode.ADMIN); rule.getRoles().add("admincite"); ruleDao.addRule(rule);
rule.getRoles().contains(GeoServerRole.ANY_ROLE.getAuthority())));
rule.getRoles().contains(GeoServerRole.ANY_ROLE.getAuthority())));
new RuleRolesFormComponent("roles", new PropertyModel(rule, "roles")) .setHasAnyRole( rule.getRoles() .contains(GeoServerRole.ANY_ROLE.getAuthority())));