int i = 0;
loop: while (i < rdns.size()) {
Rdn currrRdn = rdns.get(i);
- if (!"dc".equals(currrRdn.getType()))
+ if (!LdifName.dc.name().equals(currrRdn.getType()))
break loop;
else {
String currVal = (String) currrRdn.getValue();
import java.util.ArrayList;
import java.util.Dictionary;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.transaction.Status;
import javax.transaction.UserTransaction;
this.userAdminServiceReference = userAdminServiceReference;
}
- public List<String> getKnownBaseDns(boolean onlyWritable) {
- List<String> dns = new ArrayList<String>();
+ public Map<String, String> getKnownBaseDns(boolean onlyWritable) {
+ Map<String, String> dns = new HashMap<String, String>();
for (String uri : userAdminServiceReference.getPropertyKeys()) {
if (!uri.startsWith("/"))
continue;
continue;
if (baseDn.equalsIgnoreCase(AuthConstants.ROLES_BASEDN))
continue;
- dns.add(baseDn);
+ dns.put(baseDn, uri);
}
return dns;
}
-
+
/* DEPENDENCY INJECTION */
public void setUserAdmin(UserAdmin userAdmin) {
this.userAdmin = userAdmin;
package org.argeo.security.ui.admin.internal.commands;
import java.util.Dictionary;
-import java.util.List;
+import java.util.Map;
import org.argeo.ArgeoException;
import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
import org.argeo.jcr.ArgeoNames;
import org.argeo.osgi.useradmin.LdifName;
+import org.argeo.osgi.useradmin.UserAdminConf;
import org.argeo.security.ui.admin.SecurityAdminPlugin;
import org.argeo.security.ui.admin.internal.UiAdminUtils;
import org.argeo.security.ui.admin.internal.UserAdminWrapper;
}
}
+ private Map<String, String> getDns() {
+ return userAdminWrapper.getKnownBaseDns(true);
+ }
+
private String getDn(String cn) {
- return "cn=" + cn + ",ou=groups," + baseDnCmb.getText();
+ Map<String, String> dns = getDns();
+ String bdn = baseDnCmb.getText();
+ if (EclipseUiUtils.notEmpty(bdn)) {
+ Dictionary<String, ?> props = UserAdminConf.uriAsProperties(dns
+ .get(bdn));
+ String dn = LdifName.cn.name()+"=" + cn + ","
+ + UserAdminConf.groupBase.getValue(props) + "," + bdn;
+ return dn;
+ }
+ return null;
}
private void initialiseDnCmb(Combo combo) {
- List<String> dns = userAdminWrapper.getKnownBaseDns(true);
+ Map<String, String> dns = userAdminWrapper.getKnownBaseDns(true);
if (dns.isEmpty())
throw new ArgeoException(
- "No writable base dn found. Cannot create user");
- combo.setItems(dns.toArray(new String[0]));
+ "No writable base dn found. Cannot create group");
+ combo.setItems(dns.keySet().toArray(new String[0]));
if (dns.size() == 1)
combo.select(0);
}
-
}
private Combo createGridLC(Composite parent, String label) {
import java.util.Dictionary;
import java.util.List;
+import java.util.Map;
import javax.naming.InvalidNameException;
import javax.naming.ldap.LdapName;
import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
import org.argeo.jcr.ArgeoNames;
import org.argeo.osgi.useradmin.LdifName;
+import org.argeo.osgi.useradmin.UserAdminConf;
import org.argeo.security.ui.admin.SecurityAdminPlugin;
import org.argeo.security.ui.admin.internal.UiAdminUtils;
import org.argeo.security.ui.admin.internal.UserAdminWrapper;
}
+ private Map<String, String> getDns() {
+ return userAdminWrapper.getKnownBaseDns(true);
+ }
+
private String getDn(String uid) {
- return "uid=" + uid + ",ou=users," + baseDnCmb.getText();
+ Map<String, String> dns = getDns();
+ String bdn = baseDnCmb.getText();
+ if (EclipseUiUtils.notEmpty(bdn)) {
+ Dictionary<String, ?> props = UserAdminConf.uriAsProperties(dns
+ .get(bdn));
+ String dn = LdifName.uid.name() + "=" + uid + ","
+ + UserAdminConf.userBase.getValue(props) + "," + bdn;
+ return dn;
+ }
+ return null;
}
private void initialiseDnCmb(Combo combo) {
- List<String> dns = userAdminWrapper.getKnownBaseDns(true);
+ Map<String, String> dns = userAdminWrapper.getKnownBaseDns(true);
if (dns.isEmpty())
throw new ArgeoException(
"No writable base dn found. Cannot create user");
- combo.setItems(dns.toArray(new String[0]));
+ combo.setItems(dns.keySet().toArray(new String[0]));
if (dns.size() == 1)
combo.select(0);
}