@ -65,11 +65,12 @@ final class PrePostMethodSecurityConfiguration {
@@ -65,11 +65,12 @@ final class PrePostMethodSecurityConfiguration {
static MethodInterceptor preFilterAuthorizationMethodInterceptor (
ObjectProvider < GrantedAuthorityDefaults > defaultsProvider ,
ObjectProvider < MethodSecurityExpressionHandler > expressionHandlerProvider ,
ObjectProvider < SecurityContextHolderStrategy > strategyProvider , ApplicationContext context ) {
ObjectProvider < SecurityContextHolderStrategy > strategyProvider ,
ObjectProvider < RoleHierarchy > roleHierarchyProvider , ApplicationContext context ) {
PreFilterAuthorizationMethodInterceptor preFilter = new PreFilterAuthorizationMethodInterceptor ( ) ;
strategyProvider . ifAvailable ( preFilter : : setSecurityContextHolderStrategy ) ;
preFilter . setExpressionHandler (
new DeferringMethodSecurityExpressionHandler ( expressionHandlerProvider , defaults Provider, context ) ) ;
preFilter . setExpressionHandler ( new DeferringMethodSecurityExpressionHandler ( expressionHandlerProvider ,
defaultsProvider , roleHierarchy Provider, context ) ) ;
return preFilter ;
}
@ -80,10 +81,11 @@ final class PrePostMethodSecurityConfiguration {
@@ -80,10 +81,11 @@ final class PrePostMethodSecurityConfiguration {
ObjectProvider < MethodSecurityExpressionHandler > expressionHandlerProvider ,
ObjectProvider < SecurityContextHolderStrategy > strategyProvider ,
ObjectProvider < AuthorizationEventPublisher > eventPublisherProvider ,
ObjectProvider < ObservationRegistry > registryProvider , ApplicationContext context ) {
ObjectProvider < ObservationRegistry > registryProvider , ObjectProvider < RoleHierarchy > roleHierarchyProvider ,
ApplicationContext context ) {
PreAuthorizeAuthorizationManager manager = new PreAuthorizeAuthorizationManager ( ) ;
manager . setExpressionHandler (
new DeferringMethodSecurityExpressionHandler ( expressionHandlerProvider , defaults Provider, context ) ) ;
manager . setExpressionHandler ( new DeferringMethodSecurityExpressionHandler ( expressionHandlerProvider ,
defaultsProvider , roleHierarchy Provider, context ) ) ;
AuthorizationManagerBeforeMethodInterceptor preAuthorize = AuthorizationManagerBeforeMethodInterceptor
. preAuthorize ( manager ( manager , registryProvider ) ) ;
strategyProvider . ifAvailable ( preAuthorize : : setSecurityContextHolderStrategy ) ;
@ -98,10 +100,11 @@ final class PrePostMethodSecurityConfiguration {
@@ -98,10 +100,11 @@ final class PrePostMethodSecurityConfiguration {
ObjectProvider < MethodSecurityExpressionHandler > expressionHandlerProvider ,
ObjectProvider < SecurityContextHolderStrategy > strategyProvider ,
ObjectProvider < AuthorizationEventPublisher > eventPublisherProvider ,
ObjectProvider < ObservationRegistry > registryProvider , ApplicationContext context ) {
ObjectProvider < ObservationRegistry > registryProvider , ObjectProvider < RoleHierarchy > roleHierarchyProvider ,
ApplicationContext context ) {
PostAuthorizeAuthorizationManager manager = new PostAuthorizeAuthorizationManager ( ) ;
manager . setExpressionHandler (
new DeferringMethodSecurityExpressionHandler ( expressionHandlerProvider , defaults Provider, context ) ) ;
manager . setExpressionHandler ( new DeferringMethodSecurityExpressionHandler ( expressionHandlerProvider ,
defaultsProvider , roleHierarchy Provider, context ) ) ;
AuthorizationManagerAfterMethodInterceptor postAuthorize = AuthorizationManagerAfterMethodInterceptor
. postAuthorize ( manager ( manager , registryProvider ) ) ;
strategyProvider . ifAvailable ( postAuthorize : : setSecurityContextHolderStrategy ) ;
@ -114,19 +117,20 @@ final class PrePostMethodSecurityConfiguration {
@@ -114,19 +117,20 @@ final class PrePostMethodSecurityConfiguration {
static MethodInterceptor postFilterAuthorizationMethodInterceptor (
ObjectProvider < GrantedAuthorityDefaults > defaultsProvider ,
ObjectProvider < MethodSecurityExpressionHandler > expressionHandlerProvider ,
ObjectProvider < SecurityContextHolderStrategy > strategyProvider , ApplicationContext context ) {
ObjectProvider < SecurityContextHolderStrategy > strategyProvider ,
ObjectProvider < RoleHierarchy > roleHierarchyProvider , ApplicationContext context ) {
PostFilterAuthorizationMethodInterceptor postFilter = new PostFilterAuthorizationMethodInterceptor ( ) ;
strategyProvider . ifAvailable ( postFilter : : setSecurityContextHolderStrategy ) ;
postFilter . setExpressionHandler (
new DeferringMethodSecurityExpressionHandler ( expressionHandlerProvider , defaults Provider, context ) ) ;
postFilter . setExpressionHandler ( new DeferringMethodSecurityExpressionHandler ( expressionHandlerProvider ,
defaultsProvider , roleHierarchy Provider, context ) ) ;
return postFilter ;
}
private static MethodSecurityExpressionHandler defaultExpressionHandler (
ObjectProvider < GrantedAuthorityDefaults > defaultsProvider , ApplicationContext context ) {
ObjectProvider < GrantedAuthorityDefaults > defaultsProvider ,
ObjectProvider < RoleHierarchy > roleHierarchyProvider , ApplicationContext context ) {
DefaultMethodSecurityExpressionHandler handler = new DefaultMethodSecurityExpressionHandler ( ) ;
RoleHierarchy roleHierarchy = ( context . getBeanNamesForType ( RoleHierarchy . class ) . length > 0 )
? context . getBean ( RoleHierarchy . class ) : new NullRoleHierarchy ( ) ;
RoleHierarchy roleHierarchy = roleHierarchyProvider . getIfAvailable ( NullRoleHierarchy : : new ) ;
handler . setRoleHierarchy ( roleHierarchy ) ;
defaultsProvider . ifAvailable ( ( d ) - > handler . setDefaultRolePrefix ( d . getRolePrefix ( ) ) ) ;
handler . setApplicationContext ( context ) ;
@ -144,9 +148,10 @@ final class PrePostMethodSecurityConfiguration {
@@ -144,9 +148,10 @@ final class PrePostMethodSecurityConfiguration {
private DeferringMethodSecurityExpressionHandler (
ObjectProvider < MethodSecurityExpressionHandler > expressionHandlerProvider ,
ObjectProvider < GrantedAuthorityDefaults > defaultsProvider , ApplicationContext applicationContext ) {
this . expressionHandler = SingletonSupplier . of ( ( ) - > expressionHandlerProvider
. getIfAvailable ( ( ) - > defaultExpressionHandler ( defaultsProvider , applicationContext ) ) ) ;
ObjectProvider < GrantedAuthorityDefaults > defaultsProvider ,
ObjectProvider < RoleHierarchy > roleHierarchyProvider , ApplicationContext applicationContext ) {
this . expressionHandler = SingletonSupplier . of ( ( ) - > expressionHandlerProvider . getIfAvailable (
( ) - > defaultExpressionHandler ( defaultsProvider , roleHierarchyProvider , applicationContext ) ) ) ;
}
@Override