X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.enterprise%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FLdifUserAdmin.java;h=3e683b6116fbc2b435ff53e9871f3319d63f676f;hb=6338d85d3f970dd0eb8845693ddad90a93b99d03;hp=521ae8bb6e89916c6b88ea490767658e8b3012fa;hpb=e66b9893b0e511f8ab295e3cee42b7dc966f1597;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.enterprise/src/org/argeo/osgi/useradmin/LdifUserAdmin.java b/org.argeo.enterprise/src/org/argeo/osgi/useradmin/LdifUserAdmin.java index 521ae8bb6..3e683b611 100644 --- a/org.argeo.enterprise/src/org/argeo/osgi/useradmin/LdifUserAdmin.java +++ b/org.argeo.enterprise/src/org/argeo/osgi/useradmin/LdifUserAdmin.java @@ -1,13 +1,14 @@ package org.argeo.osgi.useradmin; -import static org.argeo.osgi.useradmin.LdifName.inetOrgPerson; -import static org.argeo.osgi.useradmin.LdifName.objectClass; +import static org.argeo.naming.LdapAttrs.objectClass; +import static org.argeo.naming.LdapObjs.inetOrgPerson; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.URI; import java.util.ArrayList; import java.util.Dictionary; import java.util.HashSet; @@ -22,10 +23,11 @@ import javax.naming.directory.Attributes; import javax.naming.ldap.LdapName; import javax.transaction.TransactionManager; -import org.argeo.util.naming.LdifParser; -import org.argeo.util.naming.LdifWriter; +import org.argeo.naming.LdifParser; +import org.argeo.naming.LdifWriter; import org.osgi.framework.Filter; import org.osgi.service.useradmin.Role; +import org.osgi.service.useradmin.User; /** * A user admin based on a LDIF files. Requires a {@link TransactionManager} and @@ -40,14 +42,26 @@ public class LdifUserAdmin extends AbstractUserDirectory { } public LdifUserAdmin(Dictionary properties) { - super(properties); + super(null, properties); } + public LdifUserAdmin(URI uri, Dictionary properties) { + super(uri, properties); + } + + @Deprecated public LdifUserAdmin(InputStream in) { - super(new Hashtable()); + super(null, new Hashtable()); load(in); } + @Override + protected AbstractUserDirectory scope(User user) { + Dictionary properties = cloneProperties(); + properties.put(UserAdminConf.readOnly.name(), "true"); + return new LdifUserAdmin(properties); + } + private static Dictionary fromUri(String uri, String baseDn) { Hashtable res = new Hashtable(); res.put(UserAdminConf.uri.name(), uri);