X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=security%2Fruntime%2Forg.argeo.security.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fcore%2FSystemExecutionBeanPostProcessor.java;fp=security%2Fruntime%2Forg.argeo.security.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fcore%2FSystemExecutionBeanPostProcessor.java;h=a2086bb9cda28918152c01fe6b31db07d8a0ba9b;hb=3e638706693d06f4b5a16c8fe0197b8c7e7794b3;hp=017317361f9c70ce067172238872bf1534581365;hpb=30808844bdd83ed7a7398af4ef4c470975a3067a;p=lgpl%2Fargeo-commons.git diff --git a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/SystemExecutionBeanPostProcessor.java b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/SystemExecutionBeanPostProcessor.java index 017317361..a2086bb9c 100644 --- a/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/SystemExecutionBeanPostProcessor.java +++ b/security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/core/SystemExecutionBeanPostProcessor.java @@ -1,14 +1,38 @@ package org.argeo.security.core; +import java.beans.PropertyDescriptor; + import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.beans.PropertyValues; +import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor; +import org.springframework.context.ApplicationEvent; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextRefreshedEvent; /** - * Executes with a system authentication the initialization methods of the - * application context where it has been defined. + * Executes with a system authentication the instantiation and initialization + * methods of the application context where it has been defined. */ -public class SystemExecutionBeanPostProcessor extends - AbstractSystemExecution implements BeanPostProcessor { +public class SystemExecutionBeanPostProcessor extends AbstractSystemExecution + implements InstantiationAwareBeanPostProcessor, ApplicationListener { + + @SuppressWarnings("rawtypes") + public Object postProcessBeforeInstantiation(Class beanClass, + String beanName) throws BeansException { + authenticateAsSystem(); + return null; + } + + public boolean postProcessAfterInstantiation(Object bean, String beanName) + throws BeansException { + return true; + } + + public PropertyValues postProcessPropertyValues(PropertyValues pvs, + PropertyDescriptor[] pds, Object bean, String beanName) + throws BeansException { + return pvs; + } public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { @@ -26,4 +50,12 @@ public class SystemExecutionBeanPostProcessor extends return bean; } + public void onApplicationEvent(ApplicationEvent event) { + if (event instanceof ContextRefreshedEvent) { + // make sure that we have deauthenticated after the application + // context was initialized/refreshed + deauthenticateAsSystem(); + } + } + }