]> git.argeo.org Git - lgpl/argeo-commons.git/blob - admin/wizards/NewUserWizard.java
Prepare next development cycle
[lgpl/argeo-commons.git] / admin / wizards / NewUserWizard.java
1 package org.argeo.security.ui.admin.wizards;
2
3 import javax.jcr.Node;
4 import javax.jcr.Session;
5
6 import org.argeo.eclipse.ui.dialogs.Error;
7 import org.argeo.jcr.ArgeoNames;
8 import org.argeo.jcr.JcrUtils;
9 import org.argeo.security.UserAdminService;
10 import org.argeo.security.jcr.JcrUserDetails;
11 import org.eclipse.jface.wizard.Wizard;
12 import org.springframework.security.GrantedAuthority;
13
14 /** Wizard to create a new user */
15 public class NewUserWizard extends Wizard {
16 private String homeBasePath = "/home";
17 private Session session;
18 private UserAdminService userAdminService;
19
20 // pages
21 private MainUserInfoWizardPage mainUserInfo;
22
23 public NewUserWizard(Session session, UserAdminService userAdminService) {
24 this.session = session;
25 this.userAdminService = userAdminService;
26 }
27
28 @Override
29 public void addPages() {
30 mainUserInfo = new MainUserInfoWizardPage(userAdminService);
31 addPage(mainUserInfo);
32 }
33
34 @Override
35 public boolean performFinish() {
36 if (!canFinish())
37 return false;
38
39 try {
40 String username = mainUserInfo.getUsername();
41 session.save();
42 Node userHome = JcrUtils.createUserHome(session, homeBasePath,
43 username);
44 Node userProfile = userHome.getNode(ArgeoNames.ARGEO_PROFILE);
45 mainUserInfo.mapToProfileNode(userProfile);
46 String password = mainUserInfo.getPassword();
47 JcrUserDetails jcrUserDetails = new JcrUserDetails(
48 userHome.getPath(), username, password, true, true, true,
49 true, new GrantedAuthority[0]);
50 session.save();
51 userAdminService.createUser(jcrUserDetails);
52 return true;
53 } catch (Exception e) {
54 JcrUtils.discardQuietly(session);
55 Error.show("Cannot create new user", e);
56 return false;
57 }
58 }
59
60 public void setSession(Session session) {
61 this.session = session;
62 }
63
64 }