Improve data admin log in
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 7 Sep 2016 10:34:30 +0000 (10:34 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 7 Sep 2016 10:34:30 +0000 (10:34 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@9099 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.cms.api/src/org/argeo/node/DataAdminPrincipal.java
org.argeo.cms/src/org/argeo/cms/internal/kernel/HomeRepository.java
org.argeo.security.jackrabbit/src/org/argeo/security/jackrabbit/SystemJackrabbitLoginModule.java

index df9bf35b7b27bfef5e95d4a5a85e820d813962b1..743c96f2eb156fa6c6731b15d2a7a71480aa5bc1 100644 (file)
@@ -4,7 +4,8 @@ import java.security.Principal;
 
 /** Allows to modify any data. */
 public final class DataAdminPrincipal implements Principal {
-       private final String name = "ou=dataAdmin";
+       // FIXME put auth constants in API
+       private final String name = "OU=node";
 
        @Override
        public String getName() {
index 5b7c7773d218b6bf40b39e24502fa20d580f4e6d..d1dfb7dd684c7a7daa435d54f8f0b0cd996ab872 100644 (file)
@@ -90,6 +90,8 @@ class HomeRepository extends JcrRepositoryWrapper implements KernelConstants, Ar
                        return;
                if (session.getUserID().equals(AuthConstants.ROLE_ANONYMOUS))
                        return;
+               if (session.getUserID().equals(AuthConstants.ROLE_KERNEL))
+                       return;
 
                if (checkedUsers.contains(username))
                        return;
index c041d276dc1535ae086a8a045b6a62223d894619..688791e2cfbe6969c22c1ba470cf9e46a95dfd15 100644 (file)
@@ -18,8 +18,8 @@ public class SystemJackrabbitLoginModule implements LoginModule {
        private Subject subject;
 
        @Override
-       public void initialize(Subject subject, CallbackHandler callbackHandler,
-                       Map<String, ?> sharedState, Map<String, ?> options) {
+       public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState,
+                       Map<String, ?> options) {
                this.subject = subject;
        }
 
@@ -30,21 +30,17 @@ public class SystemJackrabbitLoginModule implements LoginModule {
 
        @Override
        public boolean commit() throws LoginException {
-               Set<DataAdminPrincipal> initPrincipal = subject
-                               .getPrincipals(DataAdminPrincipal.class);
+               Set<DataAdminPrincipal> initPrincipal = subject.getPrincipals(DataAdminPrincipal.class);
                if (!initPrincipal.isEmpty()) {
-                       subject.getPrincipals().add(
-                                       new AdminPrincipal(SecurityConstants.ADMIN_ID));
+                       subject.getPrincipals().add(new AdminPrincipal(initPrincipal.iterator().next().getName()));
                        return true;
                }
 
-               Set<X500Principal> userPrincipal = subject
-                               .getPrincipals(X500Principal.class);
+               Set<X500Principal> userPrincipal = subject.getPrincipals(X500Principal.class);
                if (userPrincipal.isEmpty())
                        throw new LoginException("Subject must be pre-authenticated");
                if (userPrincipal.size() > 1)
-                       throw new LoginException("Multiple user principals "
-                                       + userPrincipal);
+                       throw new LoginException("Multiple user principals " + userPrincipal);
 
                return true;
        }
@@ -56,8 +52,7 @@ public class SystemJackrabbitLoginModule implements LoginModule {
 
        @Override
        public boolean logout() throws LoginException {
-               Set<DataAdminPrincipal> initPrincipal = subject
-                               .getPrincipals(DataAdminPrincipal.class);
+               Set<DataAdminPrincipal> initPrincipal = subject.getPrincipals(DataAdminPrincipal.class);
                if (!initPrincipal.isEmpty()) {
                        subject.getPrincipals(AdminPrincipal.class);
                        return true;