private String getConfigPropertyByEntity(OrganizationalEntity entity, String userKey, String roleKey) { if (entity instanceof User) { return getConfigProperty(userKey); } else if (entity instanceof Group) { return getConfigProperty(roleKey); } else { throw new IllegalArgumentException("Unknown organizational entity: " + entity); } }
private String getAttributeValueForEntity(OrganizationalEntity entity, String attributeName, String defaultValue) { String context = getConfigPropertyByEntity(entity, USER_CTX, ROLE_CTX); String filter = getConfigPropertyByEntity(entity, USER_FILTER, ROLE_FILTER); String attrId = getConfigProperty(attributeName, defaultValue); String entityId = extractEntityId(entity); return ldapSearcher.search(context, filter, entityId).getSingleAttributeResult(attrId); }
private boolean isEntityIdDn() { return Boolean.parseBoolean(getConfigProperty(IS_ENTITY_ID_DN, DEFAULT_ENTITY_ID_DN)); }
@Override public Iterator<OrganizationalEntity> getMembersForGroup(Group group) { String roleContext = getConfigProperty(ROLE_CTX); String roleFilter = getConfigProperty(ROLE_MEMBERS_FILTER, getConfigProperty(ROLE_FILTER)); String roleAttrId = getConfigProperty(MEMBER_ATTR_ID, DEFAULT_MEMBER_ATTR_ID); String entityId = extractEntityId(group); List<String> memberIds = ldapSearcher.search(roleContext, roleFilter, entityId).getAttributeResults(roleAttrId); return memberIds.stream() .filter(memberId -> memberId != null) .map(memberId -> (OrganizationalEntity) TaskModelProvider.getFactory().newUser(memberId)) .collect(Collectors.toList()) .iterator(); }
private String extractEntityId(OrganizationalEntity entity) { if (!isEntityIdDn()) { return entity.getId(); } String entityAttrId = null; if (entity instanceof User) { entityAttrId = getConfigProperty(USER_ATTR_ID, DEFAULT_USER_ATTR_ID); } else if (entity instanceof Group) { entityAttrId = getConfigProperty(ROLE_ATTR_ID, DEFAULT_ROLE_ATTR_ID); } return extractAttribute(entity.getId(), entityAttrId); }
@Override public String getEntityForEmail(String email) { String context = getConfigProperty(USER_CTX); String filter = getConfigProperty(EMAIL_FILTER); String attributeId = getConfigProperty(USER_ATTR_ID, DEFAULT_USER_ATTR_ID); LdapSearcher searcher = ldapSearcher.search(context, filter, email); if (searcher.getSearchResults().isEmpty()) { return null; } if (isEntityIdDn()) { return searcher.getSingleSearchResult().getNameInNamespace(); } return searcher.getSingleAttributeResult(attributeId); }