X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Finternal%2Fcommands%2FNewUser.java;h=c04c83562f3cad02fdbbed82a40b5eedf4cd728e;hb=c13da2a3a91edd21b54db7563727d009def37d3e;hp=c336753dc6ec19a1f231d2b840ec3ab2b23bd44b;hpb=f0be5ec381492eff23d4576ee4122734af4ad877;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/NewUser.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/NewUser.java index c336753dc..c04c83562 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/NewUser.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/NewUser.java @@ -17,18 +17,20 @@ package org.argeo.security.ui.admin.internal.commands; import java.util.Dictionary; import java.util.List; +import java.util.Map; import javax.naming.InvalidNameException; import javax.naming.ldap.LdapName; import javax.naming.ldap.Rdn; -import org.argeo.ArgeoException; +import org.argeo.cms.CmsException; +import org.argeo.cms.util.useradmin.UserAdminUtils; 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; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; @@ -104,33 +106,33 @@ public class NewUser extends AbstractHandler { if (!canFinish()) return false; String username = mainUserInfo.getUsername(); + userAdminWrapper.beginTransactionIfNeeded(); try { - userAdminWrapper.beginTransactionIfNeeded(); User user = (User) userAdminWrapper.getUserAdmin().createRole( getDn(username), Role.USER); Dictionary props = user.getProperties(); String lastNameStr = lastNameTxt.getText(); - if (UiAdminUtils.notNull(lastNameStr)) + if (EclipseUiUtils.notEmpty(lastNameStr)) props.put(LdifName.sn.name(), lastNameStr); String firstNameStr = firstNameTxt.getText(); - if (UiAdminUtils.notNull(firstNameStr)) - props.put(LdifName.givenname.name(), firstNameStr); + if (EclipseUiUtils.notEmpty(firstNameStr)) + props.put(LdifName.givenName.name(), firstNameStr); - String cn = UiAdminUtils - .getDefaultCn(firstNameStr, lastNameStr); - if (UiAdminUtils.notNull(cn)) + String cn = UserAdminUtils.buildDefaultCn(firstNameStr, + lastNameStr); + if (EclipseUiUtils.notEmpty(cn)) props.put(LdifName.cn.name(), cn); String mailStr = primaryMailTxt.getText(); - if (UiAdminUtils.notNull(mailStr)) + if (EclipseUiUtils.notEmpty(mailStr)) props.put(LdifName.mail.name(), mailStr); char[] password = mainUserInfo.getPassword(); user.getCredentials().put(null, password); - + userAdminWrapper.commitOrNotifyTransactionStateChange(); userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CREATED, user)); return true; @@ -267,16 +269,29 @@ public class NewUser extends AbstractHandler { } + private Map getDns() { + return userAdminWrapper.getKnownBaseDns(true); + } + private String getDn(String uid) { - return "uid=" + uid + ",ou=users," + baseDnCmb.getText(); + Map dns = getDns(); + String bdn = baseDnCmb.getText(); + if (EclipseUiUtils.notEmpty(bdn)) { + Dictionary 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 dns = userAdminWrapper.getKnownBaseDns(true); + Map dns = userAdminWrapper.getKnownBaseDns(true); if (dns.isEmpty()) - throw new ArgeoException( + throw new CmsException( "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); } @@ -291,7 +306,7 @@ public class NewUser extends AbstractHandler { return username + "@" + (String) rdns.get(1).getValue() + '.' + (String) rdns.get(0).getValue(); } catch (InvalidNameException e) { - throw new ArgeoException("Unable to generate mail for " + throw new CmsException("Unable to generate mail for " + username + " with base dn " + baseDn, e); } }