Improve user admin
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui.admin / src / main / java / org / argeo / security / ui / admin / editors / ArgeoUserEditor.java
index b511e683c5242cea0188f71e2988089791ddc740..87b241867ddd1510f34c17f3854085c7892f6a88 100644 (file)
@@ -1,6 +1,7 @@
 package org.argeo.security.ui.admin.editors;
 
 import javax.jcr.Node;
+import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
 import org.argeo.ArgeoException;
@@ -16,6 +17,7 @@ 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.GrantedAuthority;
 
 /** Editor for an Argeo user. */
 public class ArgeoUserEditor extends FormEditor {
@@ -33,8 +35,18 @@ public class ArgeoUserEditor extends FormEditor {
                                .getUsername();
                userHome = JcrUtils.getUserHome(session, username);
 
-               userDetails = (JcrUserDetails) userAdminService
-                               .loadUserByUsername(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>");