1 package org
.argeo
.security
.ui
.admin
.editors
;
4 import javax
.jcr
.Session
;
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
;
20 /** Editor for an Argeo user. */
21 public class ArgeoUserEditor
extends FormEditor
{
22 public final static String ID
= "org.argeo.security.ui.admin.adminArgeoUserEditor";
24 private JcrUserDetails userDetails
;
25 private Node userHome
;
26 private UserAdminService userAdminService
;
27 private Session session
;
29 public void init(IEditorSite site
, IEditorInput input
)
30 throws PartInitException
{
31 super.init(site
, input
);
32 String username
= ((ArgeoUserEditorInput
) getEditorInput())
34 userHome
= JcrUtils
.getUserHome(session
, username
);
36 userDetails
= (JcrUserDetails
) userAdminService
37 .loadUserByUsername(username
);
39 this.setPartProperty("name", username
!= null ? username
: "<new user>");
40 setPartName(username
!= null ? username
: "<new user>");
43 protected void addPages() {
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
);
54 public void doSave(IProgressMonitor monitor
) {
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
);
66 UserRolesPage userRolesPage
= (UserRolesPage
) findPage(UserRolesPage
.ID
);
67 if (userRolesPage
.isDirty()) {
68 userRolesPage
.doSave(monitor
);
69 userDetails
= userDetails
.cloneWithNewRoles(userRolesPage
73 userAdminService
.updateUser(userDetails
);
75 // if (userAdminService.userExists(user.getUsername()))
76 // userAdminService.updateUser(user);
78 // userAdminService.newUser(user);
79 // setPartName(user.getUsername());
81 firePropertyChange(PROP_DIRTY
);
83 userRolesPage
.setUserDetails(userDetails
);
86 IWorkbench iw
= SecurityAdminPlugin
.getDefault().getWorkbench();
87 UsersView usersView
= (UsersView
) iw
.getActiveWorkbenchWindow()
88 .getActivePage().findView(UsersView
.ID
);
93 public void doSaveAs() {
97 public boolean isSaveAsAllowed() {
101 public void refresh() {
102 UserRolesPage userRolesPage
= (UserRolesPage
) findPage(UserRolesPage
.ID
);
103 userRolesPage
.refresh();
106 public void setUserAdminService(UserAdminService userAdminService
) {
107 this.userAdminService
= userAdminService
;
110 public void setSession(Session session
) {
111 this.session
= session
;