X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Fplugins%2Forg.argeo.security.ui.admin%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Feditors%2FArgeoUserEditor.java;h=9e564a4af515d2c7c7df4be7eab804fe3557985c;hb=9ba6c016cc5f9ae5a126d64a5e89d9edb2cfa2ad;hp=b511e683c5242cea0188f71e2988089791ddc740;hpb=fb4f7c451ea7d9025f7cf7fe032020f229df794a;p=lgpl%2Fargeo-commons.git diff --git a/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/editors/ArgeoUserEditor.java b/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/editors/ArgeoUserEditor.java index b511e683c..9e564a4af 100644 --- a/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/editors/ArgeoUserEditor.java +++ b/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/editors/ArgeoUserEditor.java @@ -1,11 +1,27 @@ +/* + * Copyright (C) 2007-2012 Argeo GmbH + * + * 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.Repository; +import javax.jcr.RepositoryException; import javax.jcr.Session; import org.argeo.ArgeoException; -import org.argeo.jcr.ArgeoNames; -import org.argeo.jcr.JcrUtils; +import org.argeo.jcr.UserJcrUtils; import org.argeo.security.UserAdminService; import org.argeo.security.jcr.JcrUserDetails; import org.argeo.security.ui.admin.SecurityAdminPlugin; @@ -16,25 +32,40 @@ 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 { - public final static String ID = "org.argeo.security.ui.admin.adminArgeoUserEditor"; + public final static String ID = SecurityAdminPlugin.PLUGIN_ID + + ".adminArgeoUserEditor"; - private JcrUserDetails userDetails; - private Node userHome; - private UserAdminService userAdminService; + /* DEPENDENCY INJECTION */ private Session session; + private UserAdminService userAdminService; + + // private Node userHome; + private Node userProfile; + private JcrUserDetails userDetails; public void init(IEditorSite site, IEditorInput input) throws PartInitException { super.init(site, input); String username = ((ArgeoUserEditorInput) getEditorInput()) .getUsername(); - userHome = JcrUtils.getUserHome(session, username); - - userDetails = (JcrUserDetails) userAdminService - .loadUserByUsername(username); + userProfile = UserJcrUtils.getUserProfile(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 : ""); setPartName(username != null ? username : ""); @@ -42,8 +73,7 @@ public class ArgeoUserEditor extends FormEditor { protected void addPages() { try { - addPage(new DefaultUserMainPage(this, - userHome.getNode(ArgeoNames.ARGEO_PROFILE))); + addPage(new DefaultUserMainPage(this, userProfile)); addPage(new UserRolesPage(this, userDetails, userAdminService)); } catch (Exception e) { throw new ArgeoException("Cannot add pages", e); @@ -82,11 +112,14 @@ public class ArgeoUserEditor extends FormEditor { userRolesPage.setUserDetails(userDetails); + // FIXME rather use a refresh command. Fails when called by another + // view. // refresh users view IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench(); UsersView usersView = (UsersView) iw.getActiveWorkbenchWindow() .getActivePage().findView(UsersView.ID); - usersView.refresh(); + if (usersView != null) + usersView.refresh(); } @Override @@ -103,11 +136,16 @@ public class ArgeoUserEditor extends FormEditor { userRolesPage.refresh(); } + /* DEPENDENCY INJECTION */ public void setUserAdminService(UserAdminService userAdminService) { this.userAdminService = userAdminService; } - public void setSession(Session session) { - this.session = session; + public void setRepository(Repository repository) { + try { + session = repository.login(); + } catch (RepositoryException re) { + throw new ArgeoException("Unable to initialise local session", re); + } } }