]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/remote/SimpleSessionProvider.java
Big cleanup of the security layers
[lgpl/argeo-commons.git] / server / runtime / org.argeo.server.jackrabbit / src / main / java / org / argeo / jackrabbit / remote / SimpleSessionProvider.java
index 8e8b1d945ce22f2c7a3883d74cfc0f6673150b57..74b96e9edd45436c0a7cb4869d8fe36884319619 100644 (file)
@@ -42,6 +42,8 @@ public class SimpleSessionProvider implements SessionProvider, Serializable {
 
        private Boolean openSessionInView = true;
 
+       private String securityWorkspace = "security";
+
        public Session getSession(HttpServletRequest request, Repository rep,
                        String workspace) throws LoginException, ServletException,
                        RepositoryException {
@@ -84,6 +86,9 @@ public class SimpleSessionProvider implements SessionProvider, Serializable {
 
        protected void writeRemoteRoles(JackrabbitSession session)
                        throws RepositoryException {
+               if (!session.getWorkspace().getName().equals(securityWorkspace))
+                       return;
+
                // retrieve roles
                String userId = session.getUserID();
                UserManager userManager = session.getUserManager();
@@ -98,7 +103,8 @@ public class SimpleSessionProvider implements SessionProvider, Serializable {
                                userGroupIds.add(it.next().getID());
 
                // write roles if needed
-               Node userProfile = JcrUtils.getUserProfile(session);
+               Node userProfile = JcrUtils.getUserHome(session).getNode(
+                               ArgeoNames.ARGEO_PROFILE);
                boolean writeRoles = false;
                if (userProfile.hasProperty(ArgeoNames.ARGEO_REMOTE_ROLES)) {
                        Value[] roles = userProfile.getProperty(