X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=security%2Fplugins%2Forg.argeo.security.ui.admin%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Fwizards%2FNewUserWizard.java;h=3af4fa954f7ee87d3537e95cc98ea6b264dc2777;hb=f763d5bc49fa5cae85e85ca8ae69f51d10a86060;hp=6c894d62a57bedf3315a6c44754e00c9342abbfc;hpb=5266ec50ddbf3247a5033d98a1dbceec6673a5b8;p=lgpl%2Fargeo-commons.git diff --git a/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/wizards/NewUserWizard.java b/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/wizards/NewUserWizard.java index 6c894d62a..3af4fa954 100644 --- a/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/wizards/NewUserWizard.java +++ b/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/wizards/NewUserWizard.java @@ -1,54 +1,72 @@ package org.argeo.security.ui.admin.wizards; import javax.jcr.Node; +import javax.jcr.RepositoryException; import javax.jcr.Session; -import org.argeo.eclipse.ui.dialogs.Error; -import org.argeo.jcr.ArgeoNames; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.eclipse.ui.ErrorFeedback; import org.argeo.jcr.JcrUtils; +import org.argeo.security.UserAdminService; import org.argeo.security.jcr.JcrUserDetails; import org.eclipse.jface.wizard.Wizard; import org.springframework.security.GrantedAuthority; -import org.springframework.security.userdetails.UserDetailsManager; /** Wizard to create a new user */ public class NewUserWizard extends Wizard { - private String homeBasePath = "/home"; + private final static Log log = LogFactory.getLog(NewUserWizard.class); private Session session; - private UserDetailsManager userDetailsManager; + private UserAdminService userAdminService; // pages private MainUserInfoWizardPage mainUserInfo; - public NewUserWizard(Session session, UserDetailsManager userDetailsManager) { + public NewUserWizard(Session session, UserAdminService userAdminService) { this.session = session; - this.userDetailsManager = userDetailsManager; + this.userAdminService = userAdminService; } @Override public void addPages() { - mainUserInfo = new MainUserInfoWizardPage(); + mainUserInfo = new MainUserInfoWizardPage(userAdminService); addPage(mainUserInfo); } @Override public boolean performFinish() { + if (!canFinish()) + return false; + + String username = mainUserInfo.getUsername(); try { - String username = mainUserInfo.getUsername(); - Node userHome = JcrUtils.createUserHome(session, homeBasePath, - username); - Node userProfile = userHome.getNode(ArgeoNames.ARGEO_PROFILE); + Node userProfile = JcrUtils.createUserProfile(session, username); + // session.getWorkspace().getVersionManager() + // .checkout(userProfile.getPath()); mainUserInfo.mapToProfileNode(userProfile); String password = mainUserInfo.getPassword(); - JcrUserDetails jcrUserDetails = new JcrUserDetails( - userHome.getPath(), username, password, true, true, true, - true, new GrantedAuthority[0]); + // TODO add roles + JcrUserDetails jcrUserDetails = new JcrUserDetails(userProfile, + password, new GrantedAuthority[0]); session.save(); - userDetailsManager.createUser(jcrUserDetails); + session.getWorkspace().getVersionManager() + .checkin(userProfile.getPath()); + userAdminService.createUser(jcrUserDetails); return true; } catch (Exception e) { JcrUtils.discardQuietly(session); - Error.show("Cannot create new user", e); + Node userHome = JcrUtils.getUserHome(session, username); + if (userHome != null) { + try { + userHome.remove(); + session.save(); + } catch (RepositoryException e1) { + JcrUtils.discardQuietly(session); + log.warn("Error when trying to clean up failed new user " + + username, e1); + } + } + ErrorFeedback.show("Cannot create new user " + username, e); return false; } }