} else { for (String role : finalRoleFilter) { TextFilter roleFilter = new TextFilter(role); roleFilter.setIncludeDefault(true); List<Rule> found = getRuleAux(filter, roleFilter); ret.put(role, found);
public RuleFilter setRole(String name) { if(name == null) throw new NullPointerException(); role.setText(name); return this; }
List<T> filterByAddress(RuleFilter filter, List<T> rules) RuleFilter.FilterType type = filter.getSourceAddress().getType(); ipvalue = filter.getSourceAddress().getText(); if(! IPUtils.isAddressValid(ipvalue)) { LOGGER.error("Bad address filter " + ipvalue); if ( filter.getSourceAddress().isIncludeDefault()) { if(rule.getAddressRange() == null || rule.getAddressRange().match(ipvalue) ) { ret.add(rule);
@Override public Response delete(String name, boolean cascade) throws ConflictRestEx, NotFoundRestEx, InternalErrorRestEx { try { if ( cascade ) { ruleAdminService.deleteRulesByRole(name); } else { RuleFilter filter = new RuleFilter(SpecialFilterType.ANY); filter.setRole(name); filter.getUser().setIncludeDefault(false); long cnt = ruleAdminService.count(filter); if ( cnt > 0 ) { throw new ConflictRestEx("Existing rules reference the role " + name); } } UserGroup role = userGroupAdminService.get(name); if ( ! userGroupAdminService.delete(role.getId())) { LOGGER.warn("Role not found: " + name); throw new NotFoundRestEx("Role not found: " + name); } return Response.status(Status.OK).entity("OK\n").build(); } catch (GeoFenceRestEx ex) { // already handled throw ex; } catch (NotFoundServiceEx ex) { LOGGER.warn("Role not found: " + name); throw new NotFoundRestEx("Role not found: " + name); } catch (Exception ex) { LOGGER.error(ex.getMessage(), ex); throw new InternalErrorRestEx(ex.getMessage()); } }
@Override public Response delete(String username, boolean cascade) throws ConflictRestEx, NotFoundRestEx, InternalErrorRestEx { try { if ( cascade ) { ruleAdminService.deleteRulesByUser(username); } else { RuleFilter filter = new RuleFilter(SpecialFilterType.ANY); filter.setUser(username); filter.getUser().setIncludeDefault(false); long cnt = ruleAdminService.count(filter); if ( cnt > 0 ) { throw new ConflictRestEx("Existing rules reference the user " + username); } } GSUser user = userAdminService.get(username); // may throw NotFoundServiceEx if ( ! userAdminService.delete(user.getId())) { LOGGER.warn("ILLEGAL STATE -- User not found: " + user); // this should not happen throw new NotFoundRestEx("ILLEGAL STATE -- User not found: " + user); } return Response.status(Status.OK).entity("OK\n").build(); } catch (GeoFenceRestEx ex) { // already handled throw ex; } catch (NotFoundServiceEx ex) { LOGGER.warn("User not found: " + username); throw new NotFoundRestEx("User not found: " +username); } catch (Exception ex) { LOGGER.error(ex.getMessage(), ex); throw new InternalErrorRestEx(ex.getMessage()); } }
private boolean getAdminAuth(RuleFilter filter) { Set<String> finalRoleFilter = validateUserRoles(filter); if(finalRoleFilter == null) { return false; } boolean isAdmin = false; if(finalRoleFilter.isEmpty()) { AdminRule rule = getAdminAuthAux(filter, filter.getRole()); isAdmin = rule == null ? false : rule.getAccess() == AdminGrantType.ADMIN; } else { for (String role : finalRoleFilter) { TextFilter roleFilter = new TextFilter(role); roleFilter.setIncludeDefault(true); AdminRule rule = getAdminAuthAux(filter, roleFilter); // if it's admin in at least one group, the admin auth is granted if(rule != null && rule.getAccess() == AdminGrantType.ADMIN) { isAdmin = true; } } } return isAdmin; }
public static void addStringCriteria(Search searchCriteria, String fieldName, RuleFilter.TextFilter filter) { switch (filter.getType()) { case ANY: break; // no filtering case DEFAULT: searchCriteria.addFilterNull(fieldName); break; case NAMEVALUE: if(filter.isIncludeDefault()) { searchCriteria.addFilterOr( Filter.isNull(fieldName), Filter.equal(fieldName, filter.getText())); } else { searchCriteria.addFilter( Filter.equal(fieldName, filter.getText())); } break; case IDVALUE: default: throw new AssertionError(); } }
public static void addFixedStringCriteria(Search searchCriteria, String fieldName, RuleFilter.TextFilter filter) { switch (filter.getType()) { case ANY: throw new BadRequestServiceEx(fieldName + " should be a fixed search and can't be ANY"); case DEFAULT: searchCriteria.addFilterNull(fieldName); break; case NAMEVALUE: if(filter.isIncludeDefault()) { throw new BadRequestServiceEx(fieldName + " should be a fixed search"); } else { searchCriteria.addFilter( Filter.equal(fieldName, filter.getText())); } break; case IDVALUE: default: throw new AssertionError(); } } }
/** * Creates a RuleFilter by setting all fields filtering either to ANY or DEFAULT. <BR> * If no other field is set, you will get <UL> * <LI>with <B>ANY</B>, all Rules will be returned</LI> * <LI>with <B>DEFAULT</B>, only the default Rule will be returned</LI> * </UL> */ public RuleFilter(SpecialFilterType type) { FilterType ft = type.getRelatedType(); user = new TextFilter(ft); role = new TextFilter(ft); instance = new IdNameFilter(ft); sourceAddress = new TextFilter(ft); service = new TextFilter(ft, true); request = new TextFilter(ft, true); workspace = new TextFilter(ft); layer = new TextFilter(ft); }
/** * Creates a RuleFilter by setting all fields filtering either to ANY or DEFAULT. <BR> * If no other field is set, you will get <UL> * <LI>with <B>ANY</B>, all Rules will be returned</LI> * <LI>with <B>DEFAULT</B>, only the default Rule will be returned</LI> * </UL> */ public RuleFilter(SpecialFilterType type) { FilterType ft = type.getRelatedType(); user = new TextFilter(ft); role = new TextFilter(ft); instance = new IdNameFilter(ft); sourceAddress = new TextFilter(ft); service = new TextFilter(ft, true); request = new TextFilter(ft, true); workspace = new TextFilter(ft); layer = new TextFilter(ft); }
private void addStringCriteria(Search searchCriteria, String fieldName, TextFilter filter) { switch (filter.getType()) { case ANY: break; // no filtering case DEFAULT: searchCriteria.addFilterNull(fieldName); break; case NAMEVALUE: searchCriteria.addFilterOr( Filter.isNull(fieldName), Filter.equal(fieldName, filter.getText())); break; case IDVALUE: default: throw new AssertionError(); } }
public RuleFilter(SpecialFilterType type, boolean includeDefault) { FilterType ft = type.getRelatedType(); user = new TextFilter(ft); user.setIncludeDefault(includeDefault); role = new TextFilter(ft); role.setIncludeDefault(includeDefault); instance = new IdNameFilter(ft, includeDefault); sourceAddress = new TextFilter(ft); sourceAddress.setIncludeDefault(includeDefault); service = new TextFilter(ft, true); service.setIncludeDefault(includeDefault); request = new TextFilter(ft, true); request.setIncludeDefault(includeDefault); workspace = new TextFilter(ft); workspace.setIncludeDefault(includeDefault); layer = new TextFilter(ft); layer.setIncludeDefault(includeDefault); }
public RuleFilter(SpecialFilterType type, boolean includeDefault) { FilterType ft = type.getRelatedType(); user = new TextFilter(ft); user.setIncludeDefault(includeDefault); role = new TextFilter(ft); role.setIncludeDefault(includeDefault); instance = new IdNameFilter(ft, includeDefault); sourceAddress = new TextFilter(ft); sourceAddress.setIncludeDefault(includeDefault); service = new TextFilter(ft, true); service.setIncludeDefault(includeDefault); request = new TextFilter(ft, true); request.setIncludeDefault(includeDefault); workspace = new TextFilter(ft); workspace.setIncludeDefault(includeDefault); layer = new TextFilter(ft); layer.setIncludeDefault(includeDefault); }
private String validateRolename(TextFilter filter) { switch(filter.getType()) { case NAMEVALUE: String name = filter.getText(); if(StringUtils.isBlank(name) ) throw new BadRequestServiceEx("Blank role name"); return name.trim(); case DEFAULT: case ANY: return null; default: throw new BadRequestServiceEx("Unknown role filter type '"+filter+"'"); } }
public RuleFilter setService(SpecialFilterType type) { service.setType(type); return this; }
public RuleFilter setSourceAddress(SpecialFilterType type) { sourceAddress.setType(type); return this; }
public RuleFilter setRequest(String name) { request.setText(name); return this; }
private String validateUsername(TextFilter filter) { switch(filter.getType()) { case NAMEVALUE: String name = filter.getText(); if(StringUtils.isBlank(name) ) throw new BadRequestServiceEx("Blank user name"); return name.trim(); case DEFAULT: case ANY: return null; default: throw new BadRequestServiceEx("Unknown user filter type '"+filter+"'"); } }
private void setFilter(TextFilter filter, String name, Boolean includeDefault) { if (name != null) { filter.setText(name); if (includeDefault != null) { filter.setIncludeDefault(includeDefault); } } else { if (includeDefault != null && includeDefault) { filter.setType(SpecialFilterType.DEFAULT); } else { filter.setType(SpecialFilterType.ANY); } } }