X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.jackrabbit%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fjackrabbit%2Fremote%2FSimpleSessionProvider.java;h=11edfe94735cc938c7c7584473984e260bfa4c3c;hb=a430449adf43f6cc6103d9fb90e8f15225f0a96b;hp=54e12bd7d52226110eaed212c41b9d61849964d3;hpb=2c4852dcd20d4cde88776c527ae935f242ae1e77;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleSessionProvider.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleSessionProvider.java index 54e12bd7d..11edfe947 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleSessionProvider.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleSessionProvider.java @@ -40,9 +40,9 @@ import org.apache.jackrabbit.api.security.user.User; import org.apache.jackrabbit.api.security.user.UserManager; import org.apache.jackrabbit.server.SessionProvider; import org.argeo.ArgeoException; -import org.argeo.jcr.ArgeoJcrUtils; import org.argeo.jcr.ArgeoNames; import org.argeo.jcr.JcrUtils; +import org.argeo.jcr.UserJcrUtils; /** * Implements an open session in view patter: a new JCR session is created for @@ -58,7 +58,7 @@ public class SimpleSessionProvider implements SessionProvider, Serializable { private Boolean openSessionInView = true; - private String securityWorkspace = "security"; + private String defaultWorkspace = "default"; public Session getSession(HttpServletRequest request, Repository rep, String workspace) throws LoginException, ServletException, @@ -67,7 +67,7 @@ public class SimpleSessionProvider implements SessionProvider, Serializable { if (openSessionInView) { JackrabbitSession session = (JackrabbitSession) rep .login(workspace); - if (session.getWorkspace().getName().equals(securityWorkspace)) + if (session.getWorkspace().getName().equals(defaultWorkspace)) writeRemoteRoles(session); return session; } else { @@ -81,7 +81,7 @@ public class SimpleSessionProvider implements SessionProvider, Serializable { JackrabbitSession session = (JackrabbitSession) rep.login( null, workspace); if (session.getWorkspace().getName() - .equals(securityWorkspace)) + .equals(defaultWorkspace)) writeRemoteRoles(session); if (log.isTraceEnabled()) log.trace("User " + session.getUserID() @@ -105,6 +105,8 @@ public class SimpleSessionProvider implements SessionProvider, Serializable { protected void writeRemoteRoles(JackrabbitSession session) throws RepositoryException { + // FIXME better deal w/ non node repo + // retrieve roles String userId = session.getUserID(); UserManager userManager = session.getUserManager(); @@ -119,12 +121,11 @@ public class SimpleSessionProvider implements SessionProvider, Serializable { userGroupIds.add(it.next().getID()); // write roles if needed - Node userProfile = ArgeoJcrUtils.getUserHome(session).getNode( - ArgeoNames.ARGEO_PROFILE); + Node userHome = UserJcrUtils.getUserHome(session); boolean writeRoles = false; - if (userProfile.hasProperty(ArgeoNames.ARGEO_REMOTE_ROLES)) { - Value[] roles = userProfile.getProperty( - ArgeoNames.ARGEO_REMOTE_ROLES).getValues(); + if (userHome.hasProperty(ArgeoNames.ARGEO_REMOTE_ROLES)) { + Value[] roles = userHome.getProperty(ArgeoNames.ARGEO_REMOTE_ROLES) + .getValues(); if (roles.length != userGroupIds.size()) writeRoles = true; else @@ -136,14 +137,14 @@ public class SimpleSessionProvider implements SessionProvider, Serializable { if (writeRoles) { session.getWorkspace().getVersionManager() - .checkout(userProfile.getPath()); + .checkout(userHome.getPath()); String[] roleIds = userGroupIds.toArray(new String[userGroupIds .size()]); - userProfile.setProperty(ArgeoNames.ARGEO_REMOTE_ROLES, roleIds); - JcrUtils.updateLastModified(userProfile); + userHome.setProperty(ArgeoNames.ARGEO_REMOTE_ROLES, roleIds); + JcrUtils.updateLastModified(userHome); session.save(); session.getWorkspace().getVersionManager() - .checkin(userProfile.getPath()); + .checkin(userHome.getPath()); } } @@ -185,7 +186,7 @@ public class SimpleSessionProvider implements SessionProvider, Serializable { } public void setSecurityWorkspace(String securityWorkspace) { - this.securityWorkspace = securityWorkspace; + this.defaultWorkspace = securityWorkspace; } }