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=1c1a3788bd7938656248388c1e5376d28aa9a9f2;hb=1d5afdce3e91054f07ddd3c98309c363b4cf1d46;hp=41b27b5ddda0df9ffed0c2f2e404c781d95aaf2b;hpb=7f23c34bcf51716cfb8f3853d47680035747052f;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 41b27b5dd..1c1a3788b 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,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 : ""); setPartName(username != null ? username : ""); @@ -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; } - }