]> 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
Update SEBI :
[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
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;
21
22 /** Editor for an Argeo user. */
23 public class ArgeoUserEditor extends FormEditor {
24 public final static String ID = "org.argeo.security.ui.admin.adminArgeoUserEditor";
25
26 private ArgeoUser user;
27 private JcrUserDetails userDetails;
28 private Node userHome;
29 private UserAdminService userAdminService;
30 private UserDetailsManager userDetailsManager;
31
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())
37 .getUsername();
38
39 userDetails = (JcrUserDetails) userDetailsManager
40 .loadUserByUsername(username);
41
42 if (username == null) {// new
43 user = new SimpleArgeoUser();
44 user.getUserNatures().put(SimpleUserNature.TYPE,
45 new SimpleUserNature());
46 } else
47 user = userAdminService.getUser(username);
48
49 this.setPartProperty("name", username != null ? username : "<new user>");
50 setPartName(username != null ? username : "<new user>");
51 }
52
53 protected void addPages() {
54 try {
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);
60 }
61 }
62
63 @Override
64 public void doSave(IProgressMonitor monitor) {
65 // list pages
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);
74 }
75
76 UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
77 if (userRolesPage.isDirty()) {
78 userRolesPage.doSave(monitor);
79 userDetails = userDetails.cloneWithNewRoles(userRolesPage
80 .getRoles());
81 }
82
83 userDetailsManager.updateUser(userDetails);
84
85 // if (userAdminService.userExists(user.getUsername()))
86 // userAdminService.updateUser(user);
87 // else {
88 // userAdminService.newUser(user);
89 // setPartName(user.getUsername());
90 // }
91 firePropertyChange(PROP_DIRTY);
92
93 userRolesPage.setUserDetails(userDetails);
94
95 // refresh users view
96 IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench();
97 UsersView usersView = (UsersView) iw.getActiveWorkbenchWindow()
98 .getActivePage().findView(UsersView.ID);
99 usersView.refresh();
100 }
101
102 @Override
103 public void doSaveAs() {
104 }
105
106 @Override
107 public boolean isSaveAsAllowed() {
108 return false;
109 }
110
111 public void refresh() {
112 UserRolesPage userRolesPage = (UserRolesPage) findPage(UserRolesPage.ID);
113 userRolesPage.refresh();
114 }
115
116 public void setUserAdminService(UserAdminService userAdminService) {
117 this.userAdminService = userAdminService;
118 }
119
120 public void setUserDetailsManager(UserDetailsManager userDetailsManager) {
121 this.userDetailsManager = userDetailsManager;
122 }
123
124 }