]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/editors/ArgeoUserEditor.java
Update license headers
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui.admin / src / main / java / org / argeo / security / ui / admin / editors / ArgeoUserEditor.java
index 41b27b5ddda0df9ffed0c2f2e404c781d95aaf2b..1c1a3788bd7938656248388c1e5376d28aa9a9f2 100644 (file)
@@ -1,14 +1,29 @@
+/*
+ * Copyright (C) 2007-2012 Mathieu Baudier
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.argeo.security.ui.admin.editors;
 
 import javax.jcr.Node;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
 
 import org.argeo.ArgeoException;
 import org.argeo.jcr.ArgeoNames;
-import org.argeo.security.ArgeoUser;
-import org.argeo.security.SimpleArgeoUser;
+import org.argeo.jcr.JcrUtils;
 import org.argeo.security.UserAdminService;
 import org.argeo.security.jcr.JcrUserDetails;
-import org.argeo.security.nature.SimpleUserNature;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
 import org.argeo.security.ui.admin.views.UsersView;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -17,34 +32,36 @@ import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.forms.editor.FormEditor;
-import org.springframework.security.userdetails.UserDetailsManager;
+import org.springframework.security.GrantedAuthority;
 
 /** Editor for an Argeo user. */
 public class ArgeoUserEditor extends FormEditor {
        public final static String ID = "org.argeo.security.ui.admin.adminArgeoUserEditor";
 
-       private ArgeoUser user;
        private JcrUserDetails userDetails;
        private Node userHome;
        private UserAdminService userAdminService;
-       private UserDetailsManager userDetailsManager;
+       private Session session;
 
        public void init(IEditorSite site, IEditorInput input)
                        throws PartInitException {
                super.init(site, input);
-               userHome = ((ArgeoUserEditorInput) getEditorInput()).getUserHome();
                String username = ((ArgeoUserEditorInput) getEditorInput())
                                .getUsername();
-
-               userDetails = (JcrUserDetails) userDetailsManager
-                               .loadUserByUsername(username);
-
-               if (username == null) {// new
-                       user = new SimpleArgeoUser();
-                       user.getUserNatures().put(SimpleUserNature.TYPE,
-                                       new SimpleUserNature());
-               } else
-                       user = userAdminService.getUser(username);
+               userHome = JcrUtils.getUserHome(session, username);
+
+               if (userAdminService.userExists(username)) {
+                       userDetails = (JcrUserDetails) userAdminService
+                                       .loadUserByUsername(username);
+               } else {
+                       GrantedAuthority[] authorities = {};
+                       try {
+                               userDetails = new JcrUserDetails(session, username, null,
+                                               authorities);
+                       } catch (RepositoryException e) {
+                               throw new ArgeoException("Cannot retrieve disabled JCR profile");
+                       }
+               }
 
                this.setPartProperty("name", username != null ? username : "<new user>");
                setPartName(username != null ? username : "<new user>");
@@ -80,7 +97,7 @@ public class ArgeoUserEditor extends FormEditor {
                                        .getRoles());
                }
 
-               userDetailsManager.updateUser(userDetails);
+               userAdminService.updateUser(userDetails);
 
                // if (userAdminService.userExists(user.getUsername()))
                // userAdminService.updateUser(user);
@@ -117,8 +134,7 @@ public class ArgeoUserEditor extends FormEditor {
                this.userAdminService = userAdminService;
        }
 
-       public void setUserDetailsManager(UserDetailsManager userDetailsManager) {
-               this.userDetailsManager = userDetailsManager;
+       public void setSession(Session session) {
+               this.session = session;
        }
-
 }