X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Fcommands%2FNewUser.java;h=443fe079c16e0c11d71c20f5f4add70657341d83;hb=cd2948994931fcb43283ffb30c1058d5860dec68;hp=fce684a67c965cb1430c987c65594391d08fd961;hpb=1b8ad59bf691c15ed1317378a83c71c56c81cad2;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewUser.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewUser.java index fce684a67..443fe079c 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewUser.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/commands/NewUser.java @@ -24,11 +24,10 @@ import org.argeo.security.UserAdminService; 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.views.UsersView; +import org.argeo.security.ui.admin.internal.UserAdminWrapper; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; -import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.jface.wizard.WizardPage; @@ -38,21 +37,18 @@ import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.handlers.HandlerUtil; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.User; -import org.osgi.service.useradmin.UserAdmin; +import org.osgi.service.useradmin.UserAdminEvent; /** Open a wizard that enables creation of a new user. */ public class NewUser extends AbstractHandler { // private final static Log log = LogFactory.getLog(NewUser.class); - public final static String ID = SecurityAdminPlugin.PLUGIN_ID + ".newUser"; - private UserAdmin userAdmin; + /* DEPENDENCY INJECTION */ + private UserAdminWrapper userAdminWrapper; // TODO implement a dynamic choice of the base dn private String getDn(String uid) { @@ -64,21 +60,23 @@ public class NewUser extends AbstractHandler { WizardDialog dialog = new WizardDialog( HandlerUtil.getActiveShell(event), newUserWizard); - // Force refresh until the listener are implemented - if (Window.OK == dialog.open()) - forceRefresh(event); + 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 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 { @@ -108,9 +106,10 @@ public class NewUser extends AbstractHandler { return false; String username = mainUserInfo.getUsername(); try { + userAdminWrapper.beginTransactionIfNeeded(); char[] password = mainUserInfo.getPassword(); - User user = (User) userAdmin.createRole(getDn(username), - Role.USER); + User user = (User) userAdminWrapper.getUserAdmin().createRole( + getDn(username), Role.USER); Dictionary props = user.getProperties(); @@ -131,8 +130,10 @@ public class NewUser extends AbstractHandler { if (UiAdminUtils.notNull(mailStr)) props.put(UserAdminConstants.KEY_MAIL, mailStr); - // TODO MANAGE Password - // pwd1Txt.getText(); + user.getCredentials().put(null, password); + + userAdminWrapper.notifyListeners(new UserAdminEvent(null, + UserAdminEvent.ROLE_CREATED, user)); return true; } catch (Exception e) { ErrorFeedback.show("Cannot create new user " + username, e); @@ -216,7 +217,8 @@ public class NewUser extends AbstractHandler { if (name.trim().equals("")) return "User name must not be empty"; - Role role = userAdmin.getRole(getDn(name)); + Role role = userAdminWrapper.getUserAdmin() + .getRole(getDn(name)); if (role != null) return "User " + name + " already exists"; if (!primaryMailTxt.getText().matches( @@ -250,9 +252,9 @@ public class NewUser extends AbstractHandler { } } - + /* DEPENDENCY INJECTION */ - public void setUserAdmin(UserAdmin userAdmin) { - this.userAdmin = userAdmin; + public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) { + this.userAdminWrapper = userAdminWrapper; } } \ No newline at end of file