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=c336753dc6ec19a1f231d2b840ec3ab2b23bd44b;hb=98f57ce4987d7a7bfcea4806b20520f1a01830fa;hp=838e66ff57cb554264218195a84ebf95d689410c;hpb=8fea21d044841079b2f490c00da5d0902d50c3eb;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 838e66ff5..c336753dc 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 @@ -26,10 +26,9 @@ 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.security.UserAdminService; +import org.argeo.osgi.useradmin.LdifName; 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; @@ -53,6 +52,13 @@ import org.osgi.service.useradmin.UserAdminEvent; /** Open a wizard that enables creation of a new user. */ public class NewUser extends AbstractHandler { + /** + * Email addresses must match this regexp pattern ({@value #EMAIL_PATTERN}. + * Thanks to this tip. + */ + public final static String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; // private final static Log log = LogFactory.getLog(NewUser.class); public final static String ID = SecurityAdminPlugin.PLUGIN_ID + ".newUser"; @@ -61,27 +67,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 @@ -93,13 +85,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); } @@ -119,20 +113,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); @@ -163,8 +157,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; @@ -239,8 +234,7 @@ public class NewUser extends AbstractHandler { .getRole(getDn(name)); if (role != null) return "User " + name + " already exists"; - if (!primaryMailTxt.getText().matches( - UserAdminService.EMAIL_PATTERN)) + if (!primaryMailTxt.getText().matches(EMAIL_PATTERN)) return "Not a valid email address"; if (lastNameTxt.getText().trim().equals("")) return "Specify a last name"; @@ -257,7 +251,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() { @@ -280,7 +277,8 @@ public class NewUser extends AbstractHandler { throw new ArgeoException( "No writable base dn found. Cannot create user"); combo.setItems(dns.toArray(new String[0])); - // combo.select(0); + if (dns.size() == 1) + combo.select(0); } private String getMail(String username) { @@ -297,18 +295,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; }