/** * internal helper method * * @param buff * @param role */ protected void writeRole(StringBuffer buff, GeoServerRole role) { buff.append(role.getAuthority()); Properties props = role.getProperties(); if (props == null || props.isEmpty()) return; buff.append(getRoleParameterStartString()); boolean firstTime = true; for (Entry<Object, Object> entry : props.entrySet()) { if (firstTime == true) firstTime = false; else buff.append(getRoleParameterDelimiterString()); buff.append(entry.getKey()).append(getRoleParameterAssignmentString()); buff.append(entry.getValue() == null ? "" : entry.getValue()); } buff.append(getRoleParameterEndString()); }
role.setAttribute(A_PARENTID_RR, parentObject.getAuthority()); for (Object key : roleObject.getProperties().keySet()) { Element property = doc.createElement(E_PROPERTY_RR); role.appendChild(property); property.setAttribute(A_PROPERTY_NAME_RR, key.toString()); property.setTextContent(roleObject.getProperties().getProperty(key.toString()));
@Override public GeoServerRole convertRoleFromString(String roleString, String userName) { if (roleString == null) return null; roleString = roleString.trim(); if (roleString.isEmpty()) return null; checkDelimiters(); List<String> working = splitString(roleString.trim(), getRoleParameterStartString()); GeoServerRole result = new GeoServerRole(working.get(0)); if (working.size() == 1) { return result; } // we have role parameters result.setUserName(userName); if (working.get(1).endsWith(getRoleParameterEndString()) == false) throw createExcpetion(roleString + " does not end with " + getRoleParameterEndString()); int index = working.get(1).lastIndexOf(getRoleParameterEndString()); String roleParamString = working.get(1).substring(0, index).trim(); working = splitString(roleParamString, getRoleParameterDelimiterString()); for (String kvp : working) { List<String> tmp = splitString(kvp.trim(), getRoleParameterAssignmentString()); if (tmp.size() != 2) throw createExcpetion(roleString + " Invalid role string: " + roleString); result.getProperties().put(tmp.get(0).trim(), tmp.get(1).trim()); } return result; }
/** * Takes the role set for a user and personalizes the roles (matching user properties and role * parameters) * * @param user * @param roles * @throws IOException */ public SortedSet<GeoServerRole> personalizeRoles( GeoServerUser user, Collection<GeoServerRole> roles) throws IOException { SortedSet<GeoServerRole> set = new TreeSet<GeoServerRole>(); for (GeoServerRole role : roles) { Properties personalizedProps = getRoleService() .personalizeRoleParams( role.getAuthority(), role.getProperties(), user.getUsername(), user.getProperties()); if (personalizedProps == null) { set.add(role); } else { // create personalized role GeoServerRole pRole = getRoleService().createRoleObject(role.getAuthority()); pRole.setUserName(user.getUsername()); for (Object key : personalizedProps.keySet()) pRole.getProperties().put(key, personalizedProps.get(key)); set.add(pRole); } } return set; } }
role.getProperties().clear(); // set properties for (Object key : roleProps.keySet()) { role.getProperties().put(key, roleProps.get(key));
for (Object key : role.getProperties().keySet()) { newRole.getProperties().put(key, role.getProperties().get(key));
public void modifyValues(GeoServerRoleStore roleStore) throws IOException { GeoServerRole role_auth = roleStore.getRoleByName("ROLE_AUTHENTICATED"); GeoServerRole role_wfs = roleStore.getRoleByName("ROLE_WFS"); GeoServerRole role_wms = roleStore.getRoleByName("ROLE_WMS"); role_auth.getProperties().remove("bbox"); role_auth.getProperties().setProperty("employee", "4711"); roleStore.updateRole(role_auth); role_wms.getProperties().setProperty("envelope", "10 10 20 20"); roleStore.updateRole(role_wms); roleStore.disAssociateRoleFromGroup(role_wfs, "g_all"); roleStore.disAssociateRoleFromUser(role_wfs, "user1"); roleStore.setParentRole(role_wms, null); roleStore.setParentRole(role_wfs, role_wms); }
GeoServerRole role_wfs = roleService.getRoleByName("ROLE_WFS"); assertEquals(1, role_auth.getProperties().size()); assertEquals("4711", role_auth.getProperties().get("employee")); assertEquals(1, role_wms.getProperties().size()); assertEquals("10 10 20 20", role_wms.getProperties().get("envelope")); assertEquals(0, role_wfs.getProperties().size()); assertEquals(1, role.getProperties().size()); assertEquals("4711", role.getProperties().get("employee")); } else if ("ROLE_WMS".equals(role.getAuthority())) { assertEquals(1, role.getProperties().size()); assertEquals("10 10 20 20", role.getProperties().get("envelope")); } else { assertEquals(0, role.getProperties().size()); assertTrue(roleService.getRolesForGroup("g_all").contains(role_wms)); GeoServerRole role = roleService.getRolesForGroup("g_all").iterator().next(); assertEquals(1, role.getProperties().size()); assertEquals("10 10 20 20", role.getProperties().get("envelope")); assertEquals(1, role.getProperties().size()); assertEquals("10 10 20 20", role.getProperties().get("envelope"));
assertEquals(2, role.getProperties().size()); assertEquals(role.getProperties().getProperty("employee"), ""); assertEquals(role.getProperties().getProperty("bbox"), "lookupAtRuntime"); } else { assertEquals(0, role.getProperties().size()); assertEquals(0, role_admin.getProperties().size()); assertEquals(0, role_wfs.getProperties().size()); assertEquals(0, role_wms.getProperties().size()); assertEquals(2, role_auth.getProperties().size()); assertEquals(role_auth.getProperties().getProperty("employee"), ""); assertEquals(role_auth.getProperties().getProperty("bbox"), "lookupAtRuntime"); assertEquals(role_auth, roleService.getParentRole(role_wms)); assertEquals(role_auth, roleService.getParentRole(role_wfs)); assertEquals(2, roleService.getParentRole(role_wfs).getProperties().size()); assertEquals( roleService.getParentRole(role_wfs).getProperties().getProperty("employee"), ""); assertEquals( roleService.getParentRole(role_wfs).getProperties().getProperty("bbox"), "lookupAtRuntime");
public void insertValues(GeoServerRoleStore roleStore) throws IOException { GeoServerRole role_admin = roleStore.createRoleObject(GeoServerRole.ADMIN_ROLE.getAuthority()); GeoServerRole role_auth = roleStore.createRoleObject("ROLE_AUTHENTICATED"); GeoServerRole role_wfs = roleStore.createRoleObject("ROLE_WFS"); GeoServerRole role_wms = roleStore.createRoleObject("ROLE_WMS"); role_auth.getProperties().put("employee", ""); role_auth.getProperties().put("bbox", "lookupAtRuntime"); roleStore.addRole(role_admin); roleStore.addRole(role_auth); roleStore.addRole(role_wfs); roleStore.addRole(role_wms); roleStore.setParentRole(role_wms, role_auth); roleStore.setParentRole(role_wfs, role_auth); roleStore.associateRoleToUser(role_admin, "admin"); roleStore.associateRoleToUser(role_wms, "user1"); roleStore.associateRoleToUser(role_wfs, "user1"); roleStore.associateRoleToGroup(role_wms, "g_wms"); roleStore.associateRoleToGroup(role_wfs, "g_wfs"); roleStore.associateRoleToGroup(role_wms, "g_all"); roleStore.associateRoleToGroup(role_wfs, "g_all"); }
@Override public Object getPropertyValue(GeoServerRole item) { if (item.getProperties().size() == 0) return Boolean.FALSE; else return Boolean.TRUE; }
@Override public Object getPropertyValue(GeoServerRole item) { if (item.getProperties().size()==0) return Boolean.FALSE; else return Boolean.TRUE; }
@Override public Object getPropertyValue(GeoServerRole item) { if (item.getProperties().size()==0) return Boolean.FALSE; else return Boolean.TRUE; }
protected void addRoleProperties(GeoServerRole role, Connection con) throws SQLException,IOException { if (role.getProperties().size()==0) return; // nothing to do PreparedStatement ps = getDMLStatement("roleprops.insert", con); try { for (Object key : role.getProperties().keySet()) { Object propertyVal = role.getProperties().get(key); ps.setString(1,role.getAuthority()); ps.setString(2,key.toString()); ps.setObject(3,propertyVal); ps.execute(); } } finally { closeFinally(null, ps, null); } }
@Override protected void onFormSubmit(GeoServerRole updated) throws IOException{ if (hasRoleStore(roleServiceName)==false) { throw new RuntimeException("Invalid workflow, cannot store in a read only role service"); } GeoServerRoleStore store=null; try { store = new RoleStoreValidationWrapper(getRoleStore(roleServiceName)); GeoServerRole role = store.getRoleByName(updated.getAuthority()); role.getProperties().clear(); role.getProperties().putAll(updated.getProperties()); store.updateRole(role); String parentRoleName = get("form:parent").getDefaultModelObjectAsString(); if (parentRoleName != null) { GeoServerRole parentRole = store.getRoleByName(parentRoleName); store.setParentRole(role, parentRole); } store.store(); } catch (IOException ex) { try {store.load(); } catch (IOException ex2) {}; throw ex; } }
@Override protected void onFormSubmit(GeoServerRole updated) throws IOException{ if (hasRoleStore(roleServiceName)==false) { throw new RuntimeException("Invalid workflow, cannot store in a read only role service"); } GeoServerRoleStore store=null; try { store = new RoleStoreValidationWrapper(getRoleStore(roleServiceName)); GeoServerRole role = store.getRoleByName(updated.getAuthority()); role.getProperties().clear(); role.getProperties().putAll(updated.getProperties()); store.updateRole(role); String parentRoleName = get("form:parent").getDefaultModelObjectAsString(); if (parentRoleName != null) { GeoServerRole parentRole = store.getRoleByName(parentRoleName); store.setParentRole(role, parentRole); } store.store(); } catch (IOException ex) { try {store.load(); } catch (IOException ex2) {}; throw ex; } }
role.getProperties().clear(); role.getProperties().putAll(updated.getProperties()); store.updateRole(role);
@Override protected void onFormSubmit(GeoServerRole role) throws IOException { GeoServerRoleStore store = null; try { store = new RoleStoreValidationWrapper(getRoleStore(roleServiceName)); //copy into a new one so we can set the name properly GeoServerRole newRole= store.createRoleObject(get("form:name").getDefaultModelObjectAsString()); newRole.setUserName(role.getUserName()); newRole.getProperties().putAll(role.getProperties()); role = newRole; store.addRole(role); String parentRoleName = get("form:parent").getDefaultModelObjectAsString(); if (parentRoleName != null) { GeoServerRole parentRole = store.getRoleByName(parentRoleName); store.setParentRole(role, parentRole); } store.store(); } catch (IOException ex) { try {store.load(); } catch (IOException ex2) {}; throw ex; } }
@Override protected void onFormSubmit(GeoServerRole role) throws IOException { GeoServerRoleStore store = null; try { //copy into a new one so we can set the name properly GeoServerRole newRole = new GeoServerRole(get("form:name").getDefaultModelObjectAsString()); newRole.setUserName(role.getUserName()); newRole.getProperties().putAll(role.getProperties()); role = newRole; store = new RoleStoreValidationWrapper(getRoleStore(roleServiceName)); store.addRole(role); String parentRoleName = get("form:parent").getDefaultModelObjectAsString(); if (parentRoleName != null) { GeoServerRole parentRole = store.getRoleByName(parentRoleName); store.setParentRole(role, parentRole); } store.store(); } catch (IOException ex) { try {store.load(); } catch (IOException ex2) {}; throw ex; } }
store.createRoleObject(get("form:name").getDefaultModelObjectAsString()); newRole.setUserName(role.getUserName()); newRole.getProperties().putAll(role.getProperties()); role = newRole; store.addRole(role);