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=6c894d62a57bedf3315a6c44754e00c9342abbfc;hb=5266ec50ddbf3247a5033d98a1dbceec6673a5b8;hp=6e9704a4961f9b2a4be1d0e0b73d9d47851c4825;hpb=a8233e9378854fc9ed1f4186095d06866cbea9f8;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 6e9704a49..6c894d62a 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,10 +1,30 @@ package org.argeo.security.ui.admin.wizards; +import javax.jcr.Node; +import javax.jcr.Session; + +import org.argeo.eclipse.ui.dialogs.Error; +import org.argeo.jcr.ArgeoNames; +import org.argeo.jcr.JcrUtils; +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 Session session; + private UserDetailsManager userDetailsManager; + + // pages private MainUserInfoWizardPage mainUserInfo; + public NewUserWizard(Session session, UserDetailsManager userDetailsManager) { + this.session = session; + this.userDetailsManager = userDetailsManager; + } + @Override public void addPages() { mainUserInfo = new MainUserInfoWizardPage(); @@ -13,7 +33,28 @@ public class NewUserWizard extends Wizard { @Override public boolean performFinish() { - return false; + try { + String username = mainUserInfo.getUsername(); + Node userHome = JcrUtils.createUserHome(session, homeBasePath, + username); + Node userProfile = userHome.getNode(ArgeoNames.ARGEO_PROFILE); + mainUserInfo.mapToProfileNode(userProfile); + String password = mainUserInfo.getPassword(); + JcrUserDetails jcrUserDetails = new JcrUserDetails( + userHome.getPath(), username, password, true, true, true, + true, new GrantedAuthority[0]); + session.save(); + userDetailsManager.createUser(jcrUserDetails); + return true; + } catch (Exception e) { + JcrUtils.discardQuietly(session); + Error.show("Cannot create new user", e); + return false; + } + } + + public void setSession(Session session) { + this.session = session; } }