Make system authentication more configurable
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 4 Dec 2012 17:41:41 +0000 (17:41 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 4 Dec 2012 17:41:41 +0000 (17:41 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@5894 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/AuthenticatedApplicationContextInitialization.java

index 7afc3c179d9c6deff2cfae994b4b105e24a46221..97dd6cae037f9798602a64a12844bf5bb924fd3a 100644 (file)
@@ -16,6 +16,8 @@
 package org.argeo.security.core;
 
 import java.beans.PropertyDescriptor;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.springframework.beans.BeansException;
 import org.springframework.beans.PropertyValues;
@@ -33,6 +35,8 @@ public class AuthenticatedApplicationContextInitialization extends
                ApplicationListener {
        // private Log log = LogFactory
        // .getLog(AuthenticatedApplicationContextInitialization.class);
+       /** If non empty, restricts to these beans */
+       private List<String> beanNames = new ArrayList<String>();
 
        @SuppressWarnings("rawtypes")
        public Object postProcessBeforeInstantiation(Class beanClass,
@@ -41,7 +45,10 @@ public class AuthenticatedApplicationContextInitialization extends
                // we will deauthenticate only when the application context has been
                // refreshed in order to be able to deal with factory beans has well
                if (!isAuthenticatedBySelf()) {
-                       authenticateAsSystem();
+                       if (beanNames.size() == 0)
+                               authenticateAsSystem();
+                       else if (beanNames.contains(beanName))
+                               authenticateAsSystem();
                }
                return null;
        }
@@ -81,4 +88,8 @@ public class AuthenticatedApplicationContextInitialization extends
                }
        }
 
+       public void setBeanNames(List<String> beanNames) {
+               this.beanNames = beanNames;
+       }
+
 }