|
|
|
@ -20,6 +20,8 @@ import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
import java.util.function.Supplier; |
|
|
|
import java.util.function.Supplier; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.jspecify.annotations.Nullable; |
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.security.core.Authentication; |
|
|
|
import org.springframework.security.core.Authentication; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -58,7 +60,7 @@ public final class AuthorizationManagers { |
|
|
|
@SafeVarargs |
|
|
|
@SafeVarargs |
|
|
|
public static <T> AuthorizationManager<T> anyOf(AuthorizationDecision allAbstainDefaultDecision, |
|
|
|
public static <T> AuthorizationManager<T> anyOf(AuthorizationDecision allAbstainDefaultDecision, |
|
|
|
AuthorizationManager<T>... managers) { |
|
|
|
AuthorizationManager<T>... managers) { |
|
|
|
return (AuthorizationManagerCheckAdapter<T>) (authentication, object) -> { |
|
|
|
return (AuthorizationManagerCheckAdapter<T>) (Supplier<@Nullable Authentication> authentication, T object) -> { |
|
|
|
List<AuthorizationResult> results = new ArrayList<>(); |
|
|
|
List<AuthorizationResult> results = new ArrayList<>(); |
|
|
|
for (AuthorizationManager<T> manager : managers) { |
|
|
|
for (AuthorizationManager<T> manager : managers) { |
|
|
|
AuthorizationResult result = manager.authorize(authentication, object); |
|
|
|
AuthorizationResult result = manager.authorize(authentication, object); |
|
|
|
@ -104,7 +106,7 @@ public final class AuthorizationManagers { |
|
|
|
@SafeVarargs |
|
|
|
@SafeVarargs |
|
|
|
public static <T> AuthorizationManager<T> allOf(AuthorizationDecision allAbstainDefaultDecision, |
|
|
|
public static <T> AuthorizationManager<T> allOf(AuthorizationDecision allAbstainDefaultDecision, |
|
|
|
AuthorizationManager<T>... managers) { |
|
|
|
AuthorizationManager<T>... managers) { |
|
|
|
return (AuthorizationManagerCheckAdapter<T>) (authentication, object) -> { |
|
|
|
return (AuthorizationManagerCheckAdapter<T>) (Supplier<@Nullable Authentication> authentication, T object) -> { |
|
|
|
List<AuthorizationResult> results = new ArrayList<>(); |
|
|
|
List<AuthorizationResult> results = new ArrayList<>(); |
|
|
|
for (AuthorizationManager<T> manager : managers) { |
|
|
|
for (AuthorizationManager<T> manager : managers) { |
|
|
|
AuthorizationResult result = manager.authorize(authentication, object); |
|
|
|
AuthorizationResult result = manager.authorize(authentication, object); |
|
|
|
@ -133,7 +135,7 @@ public final class AuthorizationManagers { |
|
|
|
* @since 6.3 |
|
|
|
* @since 6.3 |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public static <T> AuthorizationManager<T> not(AuthorizationManager<T> manager) { |
|
|
|
public static <T> AuthorizationManager<T> not(AuthorizationManager<T> manager) { |
|
|
|
return (authentication, object) -> { |
|
|
|
return (Supplier<@Nullable Authentication> authentication, T object) -> { |
|
|
|
AuthorizationResult result = manager.authorize(authentication, object); |
|
|
|
AuthorizationResult result = manager.authorize(authentication, object); |
|
|
|
if (result == null) { |
|
|
|
if (result == null) { |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
@ -182,7 +184,7 @@ public final class AuthorizationManagers { |
|
|
|
private interface AuthorizationManagerCheckAdapter<T> extends AuthorizationManager<T> { |
|
|
|
private interface AuthorizationManagerCheckAdapter<T> extends AuthorizationManager<T> { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
AuthorizationResult authorize(Supplier<Authentication> authentication, T object); |
|
|
|
AuthorizationResult authorize(Supplier<@Nullable Authentication> authentication, T object); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|