X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fuseradmin%2FJcrUserAdmin.java;h=f36a0714f0cfdf52b7df5f72959c36016a62075c;hb=268e023a9de5db2549431a4415e584ac68a4f98b;hp=94051d92eb0401f79d3fbe45bbffb8a969139dff;hpb=6e7769555f6ee64159bbdb5780e34957d6d8895e;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/useradmin/JcrUserAdmin.java b/org.argeo.cms/src/org/argeo/cms/internal/useradmin/JcrUserAdmin.java index 94051d92e..f36a0714f 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/useradmin/JcrUserAdmin.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/useradmin/JcrUserAdmin.java @@ -5,17 +5,16 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; -import javax.jcr.Node; import javax.jcr.Repository; -import javax.jcr.RepositoryException; import javax.jcr.Session; import org.argeo.ArgeoException; +import org.argeo.cms.CmsException; +import org.argeo.cms.internal.useradmin.jackrabbit.JackrabbitUserAdminService; import org.argeo.jcr.JcrUtils; import org.argeo.security.UserAdminService; -import org.argeo.security.jcr.JcrSecurityModel; import org.argeo.security.jcr.JcrUserDetails; -import org.argeo.security.jcr.SimpleJcrSecurityModel; +import org.argeo.security.jcr.NewUserDetails; import org.osgi.framework.BundleContext; import org.osgi.framework.InvalidSyntaxException; import org.osgi.framework.ServiceReference; @@ -25,14 +24,16 @@ import org.osgi.service.useradmin.User; import org.osgi.service.useradmin.UserAdmin; import org.osgi.service.useradmin.UserAdminEvent; import org.osgi.service.useradmin.UserAdminListener; -import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UsernameNotFoundException; +/** + * Incomplete implementation of {@link UserAdmin} wrapping the supported + * {@link UserAdminService} for the time being. + */ public class JcrUserAdmin implements UserAdmin { private final BundleContext bundleContext; - private UserAdminService userAdminService; + private JackrabbitUserAdminService userAdminService; - private final JcrSecurityModel jcrSecurityModel = new SimpleJcrSecurityModel(); private final Session session; public JcrUserAdmin(BundleContext bundleContext, Repository node) { @@ -50,28 +51,16 @@ public class JcrUserAdmin implements UserAdmin { @Override public Role createRole(String name, int type) { - try { - if (Role.USER == type) { - Node userProfile = jcrSecurityModel.sync(session, name, null); - session.getWorkspace().getVersionManager() - .checkout(userProfile.getPath()); - String password = ""; - // TODO add roles - JcrUserDetails userDetails = new JcrUserDetails(userProfile, - password, new ArrayList()); - session.save(); - session.getWorkspace().getVersionManager() - .checkin(userProfile.getPath()); - userAdminService().createUser(userDetails); - return new JcrEndUser(userDetails); - } else if (Role.GROUP == type) { - userAdminService().newRole(name); - return new JcrGroup(name); - } else { - throw new ArgeoException("Unsupported role type " + type); - } - } catch (RepositoryException e) { - throw new ArgeoException("Cannot create role " + name); + if (Role.USER == type) { + NewUserDetails userDetails = new NewUserDetails(name, null); + userAdminService().createUser(userDetails); + return new JcrEndUser((JcrUserDetails) userAdminService() + .loadUserByUsername(name)); + } else if (Role.GROUP == type) { + userAdminService().newRole(name); + return new JcrGroup(name); + } else { + throw new ArgeoException("Unsupported role type " + type); } } @@ -123,7 +112,7 @@ public class JcrUserAdmin implements UserAdmin { @Override public User getUser(String key, String value) { - throw new ArgeoException("Property based search not yet implemented"); + throw new CmsException("Property based search not yet implemented"); } @Override @@ -135,7 +124,7 @@ public class JcrUserAdmin implements UserAdmin { return userAdminService; } - public void setUserAdminService(UserAdminService userAdminService) { + public void setUserAdminService(JackrabbitUserAdminService userAdminService) { this.userAdminService = userAdminService; }