]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/runtime/org.argeo.security.jackrabbit/src/main/java/org/argeo/security/jackrabbit/providers/JackrabbitAuthenticationProvider.java
First working remote node
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.jackrabbit / src / main / java / org / argeo / security / jackrabbit / providers / JackrabbitAuthenticationProvider.java
index d9f9f379a79a9cd6c127c78c870af4b8534b6633..ea84a073eb4862b262299cdef7a4844c14b6a7a7 100644 (file)
@@ -3,8 +3,11 @@ package org.argeo.security.jackrabbit.providers;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Properties;
 
+import javax.jcr.Credentials;
 import javax.jcr.Node;
+import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
@@ -13,15 +16,38 @@ import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.argeo.ArgeoException;
+import org.argeo.jackrabbit.JackrabbitContainer;
+import org.argeo.jcr.ArgeoJcrConstants;
 import org.argeo.security.jcr.JcrAuthenticationProvider;
+import org.osgi.framework.BundleContext;
 import org.springframework.security.GrantedAuthority;
 import org.springframework.security.GrantedAuthorityImpl;
 
 public class JackrabbitAuthenticationProvider extends JcrAuthenticationProvider {
+       // @Override
+       // protected Repository getRepository(String url, Credentials credentials)
+       // throws RepositoryException {
+       // JackrabbitContainer repository = new JackrabbitContainer();
+       // repository.setUri(url);
+       // repository.setRemoteSystemCredentials(credentials);
+       // repository.init();
+       // if (bundleContext != null) {
+       // // FIXME check if not already a node
+       // Properties properties = new Properties();
+       // properties.put(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS,
+       // ArgeoJcrConstants.ALIAS_NODE);
+       // bundleContext.registerService(Repository.class.getName(),
+       // repository, properties);
+       // }
+       // return repository;
+       // }
 
        @Override
        protected GrantedAuthority[] getGrantedAuthorities(Session session) {
                try {
+                       if (!(session instanceof JackrabbitSession))
+                               return super.getGrantedAuthorities(session);
+
                        JackrabbitSession jackrabbitSession = (JackrabbitSession) session;
                        UserManager userManager = jackrabbitSession.getUserManager();
                        User user = (User) userManager.getAuthorizable(session.getUserID());
@@ -39,6 +65,9 @@ public class JackrabbitAuthenticationProvider extends JcrAuthenticationProvider
        @Override
        protected Boolean isEnabled(Node userHome) {
                try {
+                       if (!(userHome.getSession() instanceof JackrabbitSession))
+                               return super.isEnabled(userHome);
+
                        UserManager userManager = ((JackrabbitSession) userHome
                                        .getSession()).getUserManager();
                        User user = (User) userManager.getAuthorizable(userHome