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=16e444dc5b91ac686ece74bcf86ae687358e5a2e;hb=a256888183f0232384bd7be0c8309b4ce9889823;hp=4c1e8f4cbe47f0dba2ff84051b3c3264a2eb93b6;hpb=86140b8db15a11cfd942892eface6a4f90329a41;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 4c1e8f4cb..16e444dc5 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,6 +17,7 @@ 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; @@ -26,9 +27,10 @@ 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.UserAdminConstants; import org.argeo.security.ui.admin.internal.UserAdminWrapper; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; @@ -67,27 +69,13 @@ public class NewUser extends AbstractHandler { public Object execute(ExecutionEvent event) throws ExecutionException { NewUserWizard newUserWizard = new NewUserWizard(); + newUserWizard.setWindowTitle("User creation"); WizardDialog dialog = new WizardDialog( HandlerUtil.getActiveShell(event), newUserWizard); - dialog.open(); - - // // Force refresh until the listener are implemented - // if (Window.OK == dialog.open()) - // forceRefresh(event); return null; } - // private void forceRefresh(ExecutionEvent event) { - // IWorkbenchWindow iww = HandlerUtil.getActiveWorkbenchWindow(event); - // if (iww == null) - // return; - // IWorkbenchPage activePage = iww.getActivePage(); - // IWorkbenchPart part = activePage.getActivePart(); - // if (part instanceof UsersView) - // ((UsersView) part).refresh(); - // } - private class NewUserWizard extends Wizard { // pages @@ -99,13 +87,15 @@ public class NewUser extends AbstractHandler { private Combo baseDnCmb; public NewUserWizard() { + } @Override public void addPages() { mainUserInfo = new MainUserInfoWizardPage(); addPage(mainUserInfo); - String message = "Dummy wizard to ease user creation tests:\n Mail and last name are automatically " + String message = "Default wizard that also eases user creation tests:\n " + + "Mail and last name are automatically " + "generated form the uid. Password are defauted to 'demo'."; mainUserInfo.setMessage(message, WizardPage.WARNING); } @@ -125,20 +115,20 @@ public class NewUser extends AbstractHandler { String lastNameStr = lastNameTxt.getText(); if (UiAdminUtils.notNull(lastNameStr)) - props.put(UserAdminConstants.KEY_LASTNAME, lastNameStr); + props.put(LdifName.sn.name(), lastNameStr); String firstNameStr = firstNameTxt.getText(); if (UiAdminUtils.notNull(firstNameStr)) - props.put(UserAdminConstants.KEY_FIRSTNAME, firstNameStr); + props.put(LdifName.givenName.name(), firstNameStr); String cn = UiAdminUtils .getDefaultCn(firstNameStr, lastNameStr); if (UiAdminUtils.notNull(cn)) - props.put(UserAdminConstants.KEY_CN, cn); + props.put(LdifName.cn.name(), cn); String mailStr = primaryMailTxt.getText(); if (UiAdminUtils.notNull(mailStr)) - props.put(UserAdminConstants.KEY_MAIL, mailStr); + props.put(LdifName.mail.name(), mailStr); char[] password = mainUserInfo.getPassword(); user.getCredentials().put(null, password); @@ -169,8 +159,9 @@ public class NewUser extends AbstractHandler { "Distinguished name", this); dNameTxt.setEnabled(false); - baseDnCmb = createGridLC(composite, "Base DN", this); + baseDnCmb = createGridLC(composite, "Base DN"); initialiseDnCmb(baseDnCmb); + baseDnCmb.addModifyListener(this); baseDnCmb.addModifyListener(new ModifyListener() { private static final long serialVersionUID = -1435351236582736843L; @@ -262,7 +253,10 @@ public class NewUser extends AbstractHandler { public void setVisible(boolean visible) { super.setVisible(visible); if (visible) - usernameTxt.setFocus(); + if (baseDnCmb.getSelectionIndex() == -1) + baseDnCmb.setFocus(); + else + usernameTxt.setFocus(); } public String getUsername() { @@ -275,17 +269,31 @@ 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( "No writable base dn found. Cannot create user"); - combo.setItems(dns.toArray(new String[0])); - // combo.select(0); + combo.setItems(dns.keySet().toArray(new String[0])); + if (dns.size() == 1) + combo.select(0); } private String getMail(String username) { @@ -302,18 +310,14 @@ public class NewUser extends AbstractHandler { + username + " with base dn " + baseDn, e); } } - } - private Combo createGridLC(Composite parent, String label, - ModifyListener modifyListener) { + private Combo createGridLC(Composite parent, String label) { Label lbl = new Label(parent, SWT.LEAD); lbl.setText(label); lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false)); Combo combo = new Combo(parent, SWT.LEAD | SWT.BORDER | SWT.READ_ONLY); combo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); - if (modifyListener != null) - combo.addModifyListener(modifyListener); return combo; }