1 package org
.argeo
.security
.ui
.admin
.editors
;
5 import org
.argeo
.ArgeoException
;
6 import org
.argeo
.jcr
.ArgeoNames
;
7 import org
.argeo
.security
.ArgeoUser
;
8 import org
.argeo
.security
.SimpleArgeoUser
;
9 import org
.argeo
.security
.UserAdminService
;
10 import org
.argeo
.security
.jcr
.JcrUserDetails
;
11 import org
.argeo
.security
.nature
.SimpleUserNature
;
12 import org
.argeo
.security
.ui
.admin
.SecurityAdminPlugin
;
13 import org
.argeo
.security
.ui
.admin
.views
.UsersView
;
14 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
15 import org
.eclipse
.ui
.IEditorInput
;
16 import org
.eclipse
.ui
.IEditorSite
;
17 import org
.eclipse
.ui
.IWorkbench
;
18 import org
.eclipse
.ui
.PartInitException
;
19 import org
.eclipse
.ui
.forms
.editor
.FormEditor
;
20 import org
.springframework
.security
.userdetails
.UserDetailsManager
;
22 /** Editor for an Argeo user. */
23 public class ArgeoUserEditor
extends FormEditor
{
24 public final static String ID
= "org.argeo.security.ui.admin.adminArgeoUserEditor";
26 private ArgeoUser user
;
27 private JcrUserDetails userDetails
;
28 private Node userHome
;
29 private UserAdminService userAdminService
;
30 private UserDetailsManager userDetailsManager
;
32 public void init(IEditorSite site
, IEditorInput input
)
33 throws PartInitException
{
34 super.init(site
, input
);
35 userHome
= ((ArgeoUserEditorInput
) getEditorInput()).getUserHome();
36 String username
= ((ArgeoUserEditorInput
) getEditorInput())
39 userDetails
= (JcrUserDetails
) userDetailsManager
40 .loadUserByUsername(username
);
42 if (username
== null) {// new
43 user
= new SimpleArgeoUser();
44 user
.getUserNatures().put(SimpleUserNature
.TYPE
,
45 new SimpleUserNature());
47 user
= userAdminService
.getUser(username
);
49 this.setPartProperty("name", username
!= null ? username
: "<new user>");
50 setPartName(username
!= null ? username
: "<new user>");
53 protected void addPages() {
55 addPage(new DefaultUserMainPage(this,
56 userHome
.getNode(ArgeoNames
.ARGEO_USER_PROFILE
)));
57 addPage(new UserRolesPage(this, userDetails
, userAdminService
));
58 } catch (Exception e
) {
59 throw new ArgeoException("Cannot add pages", e
);
64 public void doSave(IProgressMonitor monitor
) {
66 // TODO: make it more generic
67 DefaultUserMainPage defaultUserMainPage
= (DefaultUserMainPage
) findPage(DefaultUserMainPage
.ID
);
68 if (defaultUserMainPage
.isDirty()) {
69 defaultUserMainPage
.doSave(monitor
);
70 String newPassword
= defaultUserMainPage
.getNewPassword();
71 defaultUserMainPage
.resetNewPassword();
72 if (newPassword
!= null)
73 userDetails
= userDetails
.cloneWithNewPassword(newPassword
);
76 UserRolesPage userRolesPage
= (UserRolesPage
) findPage(UserRolesPage
.ID
);
77 if (userRolesPage
.isDirty()) {
78 userRolesPage
.doSave(monitor
);
79 userDetails
= userDetails
.cloneWithNewRoles(userRolesPage
83 userDetailsManager
.updateUser(userDetails
);
85 // if (userAdminService.userExists(user.getUsername()))
86 // userAdminService.updateUser(user);
88 // userAdminService.newUser(user);
89 // setPartName(user.getUsername());
91 firePropertyChange(PROP_DIRTY
);
93 userRolesPage
.setUserDetails(userDetails
);
96 IWorkbench iw
= SecurityAdminPlugin
.getDefault().getWorkbench();
97 UsersView usersView
= (UsersView
) iw
.getActiveWorkbenchWindow()
98 .getActivePage().findView(UsersView
.ID
);
103 public void doSaveAs() {
107 public boolean isSaveAsAllowed() {
111 public void refresh() {
112 UserRolesPage userRolesPage
= (UserRolesPage
) findPage(UserRolesPage
.ID
);
113 userRolesPage
.refresh();
116 public void setUserAdminService(UserAdminService userAdminService
) {
117 this.userAdminService
= userAdminService
;
120 public void setUserDetailsManager(UserDetailsManager userDetailsManager
) {
121 this.userDetailsManager
= userDetailsManager
;