X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.util%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FLdifUser.java;h=1eb4067d7a036e4bc1bd2cd372c74a87e70d565c;hb=5c9bae758b5bb13ff3b046ad680886ae540865e8;hp=552bfdc8da8bfbeaac3d20c608abbb64e2d2d63d;hpb=3b4d58678c32d2ca70c79e128e3bde0f6c9cd291;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUser.java b/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUser.java index 552bfdc8d..1eb4067d7 100644 --- a/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUser.java +++ b/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUser.java @@ -243,21 +243,23 @@ class LdifUser implements DirectoryUser { private final List attrFilter; private final Boolean includeFilter; - public AttributeDictionary(Boolean includeFilter) { + public AttributeDictionary(Boolean credentials) { this.attrFilter = userAdmin.getCredentialAttributeIds(); - this.includeFilter = includeFilter; + this.includeFilter = credentials; try { NamingEnumeration ids = getAttributes().getIDs(); while (ids.hasMore()) { String id = ids.next(); - if (includeFilter && attrFilter.contains(id)) + if (credentials && attrFilter.contains(id)) effectiveKeys.add(id); - else if (!includeFilter && !attrFilter.contains(id)) + else if (!credentials && !attrFilter.contains(id)) effectiveKeys.add(id); } } catch (NamingException e) { throw new UserDirectoryException("Cannot initialise attribute dictionary", e); } + if (!credentials) + effectiveKeys.add(LdapAttrs.objectClasses.name()); } @Override @@ -297,7 +299,8 @@ class LdifUser implements DirectoryUser { @Override public Object get(Object key) { try { - Attribute attr = getAttributes().get(key.toString()); + Attribute attr = !key.equals(LdapAttrs.objectClasses.name()) ? getAttributes().get(key.toString()) + : getAttributes().get(LdapAttrs.objectClass.name()); if (attr == null) return null; Object value = attr.get(); @@ -310,7 +313,7 @@ class LdifUser implements DirectoryUser { if (attr.size() == 1) return value; // special case for object class - if (attr.getID().equals(LdapAttrs.objectClass.name())) { + if (key.equals(LdapAttrs.objectClass.name())) { // TODO support multiple object classes NamingEnumeration en = attr.getAll(); String first = null;