]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/editors/ArgeoUserEditor.java
Introduce delete roles and users
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui.admin / src / main / java / org / argeo / security / ui / admin / editors / ArgeoUserEditor.java
1 package org.argeo.security.ui.admin.editors;
2
3 import javax.jcr.Node;
4 import javax.jcr.Session;
5
6 import org.argeo.ArgeoException;
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.argeo.security.ui.admin.SecurityAdminPlugin;
12 import org.argeo.security.ui.admin.views.UsersView;
13 import org.eclipse.core.runtime.IProgressMonitor;
14 import org.eclipse.ui.IEditorInput;
15 import org.eclipse.ui.IEditorSite;
16 import org.eclipse.ui.IWorkbench;
17 import org.eclipse.ui.PartInitException;
18 import org.eclipse.ui.forms.editor.FormEditor;
19
20 /** Editor for an Argeo user. */
21 public class ArgeoUserEditor extends FormEditor {
22 public final static String ID = "org.argeo.security.ui.admin.adminArgeoUserEditor";
23
24 private JcrUserDetails userDetails;
25 private Node userHome;
26 private UserAdminService userAdminService;
27 private Session session;
28
29 public void init(IEditorSite site, IEditorInput input)
30 throws PartInitException {
31 super.init(site, input);
32 String username = ((ArgeoUserEditorInput) getEditorInput())
33 .getUsername();
34 userHome = JcrUtils.getUserHome(session, username);
35
36 userDetails = (JcrUserDetails) userAdminService
37 .loadUserByUsername(username);
38
39 this.setPartProperty("name", username != null ? username : "<new user>");
40 setPartName(username != null ? username : "<new user>");
41 }
42
43 protected void addPages() {
44 try {
45 addPage(new DefaultUserMainPage(this,
46 userHome.getNode(ArgeoNames.ARGEO_PROFILE)));
47 addPage(new UserRolesPage(this, userDetails, userAdminService));
48 } catch (Exception e) {
49 throw new ArgeoException("Cannot add pages", e);
50 }
51 }
52
53 @Override
54 public void doSave(IProgressMonitor monitor) {
55 // list pages
56 // TODO: make it more generic
57 DefaultUserMainPage defaultUserMainPage = (DefaultUserMainPage) findPage(DefaultUserMainPage.ID);
58 if (defaultUserMainPage.isDirty()) {
59 defaultUserMainPage.doSave(monitor);
60 String newPassword = defaultUserMainPage.getNewPassword();
61 defaultUserMainPage.resetNewPassword();
62 if (newPassword != null)
63 userDetails = userDetails.cloneWithNewPassword(newPassword);
64 }
65
66 UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
67 if (userRolesPage.isDirty()) {
68 userRolesPage.doSave(monitor);
69 userDetails = userDetails.cloneWithNewRoles(userRolesPage
70 .getRoles());
71 }
72
73 userAdminService.updateUser(userDetails);
74
75 // if (userAdminService.userExists(user.getUsername()))
76 // userAdminService.updateUser(user);
77 // else {
78 // userAdminService.newUser(user);
79 // setPartName(user.getUsername());
80 // }
81 firePropertyChange(PROP_DIRTY);
82
83 userRolesPage.setUserDetails(userDetails);
84
85 // refresh users view
86 IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
87 UsersView usersView = (UsersView) iw.getActiveWorkbenchWindow()
88 .getActivePage().findView(UsersView.ID);
89 usersView.refresh();
90 }
91
92 @Override
93 public void doSaveAs() {
94 }
95
96 @Override
97 public boolean isSaveAsAllowed() {
98 return false;
99 }
100
101 public void refresh() {
102 UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
103 userRolesPage.refresh();
104 }
105
106 public void setUserAdminService(UserAdminService userAdminService) {
107 this.userAdminService = userAdminService;
108 }
109
110 public void setSession(Session session) {
111 this.session = session;
112 }
113 }