X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.enterprise%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FLdapUserAdmin.java;h=000cfab0c623e26aae86f5ffd81cc2bb6ae50e7c;hb=refs%2Ftags%2Fargeo-commons-2.1.50;hp=f78da0af0d29aed943c3cda8831bb9d97bffef47;hpb=0243aa5633af84d8608ba912483dbaaaefac42f1;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.enterprise/src/org/argeo/osgi/useradmin/LdapUserAdmin.java b/org.argeo.enterprise/src/org/argeo/osgi/useradmin/LdapUserAdmin.java index f78da0af0..000cfab0c 100644 --- a/org.argeo.enterprise/src/org/argeo/osgi/useradmin/LdapUserAdmin.java +++ b/org.argeo.enterprise/src/org/argeo/osgi/useradmin/LdapUserAdmin.java @@ -26,6 +26,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.naming.LdapAttrs; import org.osgi.framework.Filter; +import org.osgi.service.useradmin.User; /** * A user admin based on a LDAP server. Requires a {@link TransactionManager} @@ -75,6 +76,21 @@ public class LdapUserAdmin extends AbstractUserDirectory { log.error("Cannot destroy LDAP user admin", e); } } + + + + @SuppressWarnings("unchecked") + @Override + protected AbstractUserDirectory scope(User user) { + Dictionary credentials = user.getCredentials(); + // FIXME use arrays + Object usernameObj = credentials.get(SHARED_STATE_USERNAME); + Object passwordObj = credentials.get(SHARED_STATE_PASSWORD); + Dictionary properties = cloneProperties(); + properties.put(Context.SECURITY_PRINCIPAL, usernameObj.toString()); + properties.put(Context.SECURITY_CREDENTIALS, passwordObj.toString()); + return new LdapUserAdmin(properties); + } protected InitialLdapContext getLdapContext() { return initialLdapContext;