Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -214,12 +214,12 @@ class SessionConcurrencyDslTests {

@Bean
open fun securityFilterChain(http: HttpSecurity): SecurityFilterChain {
val isAdmin: AuthorizationManager<Any> = AuthorityAuthorizationManager.hasRole("ADMIN")
val isAdmin: AuthorizationManager<Any?> = AuthorityAuthorizationManager.hasRole("ADMIN")
http {
sessionManagement {
sessionConcurrency {
maximumSessions {
authentication -> if (isAdmin.authorize({ authentication }, "")!!.isGranted) -1 else 1
authentication -> if (isAdmin.authorize({ authentication }, null)!!.isGranted) -1 else 1
}
maxSessionsPreventsLogin = true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
* @since 7.0
* @see AuthorityAuthorizationManager
*/
public final class AllAuthoritiesAuthorizationManager<T> implements AuthorizationManager<T> {
public final class AllAuthoritiesAuthorizationManager<T extends @Nullable Object> implements AuthorizationManager<T> {

private static final String ROLE_PREFIX = "ROLE_";

Expand Down Expand Up @@ -101,7 +101,7 @@ private List<String> getGrantedAuthorities(Authentication authentication) {
* @param <T> the type of object being authorized
* @return the new instance
*/
public static <T> AllAuthoritiesAuthorizationManager<T> hasAllRoles(String... roles) {
public static <T extends @Nullable Object> AllAuthoritiesAuthorizationManager<T> hasAllRoles(String... roles) {
return hasAllPrefixedAuthorities(ROLE_PREFIX, roles);
}

Expand All @@ -113,8 +113,8 @@ public static <T> AllAuthoritiesAuthorizationManager<T> hasAllRoles(String... ro
* @param <T> the type of object being authorized
* @return the new instance
*/
public static <T> AllAuthoritiesAuthorizationManager<T> hasAllPrefixedAuthorities(String prefix,
String... authorities) {
public static <T extends @Nullable Object> AllAuthoritiesAuthorizationManager<T> hasAllPrefixedAuthorities(
String prefix, String... authorities) {
Assert.notNull(prefix, "rolePrefix cannot be null");
Assert.notEmpty(authorities, "roles cannot be empty");
Assert.noNullElements(authorities, "roles cannot contain null values");
Expand All @@ -128,7 +128,8 @@ public static <T> AllAuthoritiesAuthorizationManager<T> hasAllPrefixedAuthoritie
* @param <T> the type of object being authorized
* @return the new instance
*/
public static <T> AllAuthoritiesAuthorizationManager<T> hasAllAuthorities(String... authorities) {
public static <T extends @Nullable Object> AllAuthoritiesAuthorizationManager<T> hasAllAuthorities(
String... authorities) {
Assert.notEmpty(authorities, "authorities cannot be empty");
Assert.noNullElements(authorities, "authorities cannot contain null values");
return new AllAuthoritiesAuthorizationManager<>(authorities);
Expand All @@ -141,7 +142,8 @@ public static <T> AllAuthoritiesAuthorizationManager<T> hasAllAuthorities(String
* @param <T> the type of object being authorized
* @return the new instance
*/
public static <T> AllAuthoritiesAuthorizationManager<T> hasAllAuthorities(List<String> authorities) {
public static <T extends @Nullable Object> AllAuthoritiesAuthorizationManager<T> hasAllAuthorities(
List<String> authorities) {
Assert.notEmpty(authorities, "authorities cannot be empty");
Assert.noNullElements(authorities, "authorities cannot contain null values");
return new AllAuthoritiesAuthorizationManager<>(authorities.toArray(new String[0]));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@
* @since 7.0
* @see AuthorityAuthorizationManager
*/
public final class AllRequiredFactorsAuthorizationManager<T> implements AuthorizationManager<T> {
public final class AllRequiredFactorsAuthorizationManager<T extends @Nullable Object>
implements AuthorizationManager<T> {

private Clock clock = Clock.systemUTC();

Expand All @@ -64,7 +65,8 @@ public final class AllRequiredFactorsAuthorizationManager<T> implements Authoriz
* @see AuthorizationManagers#anyOf(AuthorizationManager[])
*/
@SafeVarargs
public static <T> AuthorizationManager<T> anyOf(AllRequiredFactorsAuthorizationManager<T>... managers) {
public static <T extends @Nullable Object> AuthorizationManager<T> anyOf(
AllRequiredFactorsAuthorizationManager<T>... managers) {
Assert.notEmpty(managers, "managers cannot be empty");
Assert.noNullElements(managers, "managers cannot contain null elements");
if (managers.length == 1) {
Expand Down Expand Up @@ -170,7 +172,7 @@ private List<GrantedAuthority> getFactorGrantedAuthorities(@Nullable Authenticat
* Creates a new {@link Builder}
* @return
*/
public static <T> Builder<T> builder() {
public static <T extends @Nullable Object> Builder<T> builder() {
return new Builder<>();
}

Expand All @@ -181,7 +183,8 @@ public static <T> Builder<T> builder() {
*
* @param <T> the type of object being authorized
*/
private static final class AnyOfFactorsAuthorizationManager<T> implements AuthorizationManager<T> {
private static final class AnyOfFactorsAuthorizationManager<T extends @Nullable Object>
implements AuthorizationManager<T> {

private final AllRequiredFactorsAuthorizationManager<T>[] managers;

Expand Down Expand Up @@ -212,7 +215,7 @@ public AuthorizationResult authorize(Supplier<? extends @Nullable Authentication
* @author Rob Winch
* @since 7.0
*/
public static final class Builder<T> {
public static final class Builder<T extends @Nullable Object> {

private List<RequiredFactor> requiredFactors = new ArrayList<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
* @author Evgeniy Cheban
* @since 5.5
*/
public final class AuthenticatedAuthorizationManager<T> implements AuthorizationManager<T> {
public final class AuthenticatedAuthorizationManager<T extends @Nullable Object> implements AuthorizationManager<T> {

private final AbstractAuthorizationStrategy authorizationStrategy;

Expand Down Expand Up @@ -69,7 +69,7 @@ public void setTrustResolver(AuthenticationTrustResolver trustResolver) {
* @param <T> the type of object being authorized
* @return the new instance
*/
public static <T> AuthenticatedAuthorizationManager<T> authenticated() {
public static <T extends @Nullable Object> AuthenticatedAuthorizationManager<T> authenticated() {
return new AuthenticatedAuthorizationManager<>();
}

Expand All @@ -80,7 +80,7 @@ public static <T> AuthenticatedAuthorizationManager<T> authenticated() {
* @return the new instance
* @since 5.8
*/
public static <T> AuthenticatedAuthorizationManager<T> fullyAuthenticated() {
public static <T extends @Nullable Object> AuthenticatedAuthorizationManager<T> fullyAuthenticated() {
return new AuthenticatedAuthorizationManager<>(new FullyAuthenticatedAuthorizationStrategy());
}

Expand All @@ -91,7 +91,7 @@ public static <T> AuthenticatedAuthorizationManager<T> fullyAuthenticated() {
* @return the new instance
* @since 5.8
*/
public static <T> AuthenticatedAuthorizationManager<T> rememberMe() {
public static <T extends @Nullable Object> AuthenticatedAuthorizationManager<T> rememberMe() {
return new AuthenticatedAuthorizationManager<>(new RememberMeAuthorizationStrategy());
}

Expand All @@ -102,7 +102,7 @@ public static <T> AuthenticatedAuthorizationManager<T> rememberMe() {
* @return the new instance
* @since 5.8
*/
public static <T> AuthenticatedAuthorizationManager<T> anonymous() {
public static <T extends @Nullable Object> AuthenticatedAuthorizationManager<T> anonymous() {
return new AuthenticatedAuthorizationManager<>(new AnonymousAuthorizationStrategy());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
* @since 5.5
* @see AllAuthoritiesAuthorizationManager
*/
public final class AuthorityAuthorizationManager<T> implements AuthorizationManager<T> {
public final class AuthorityAuthorizationManager<T extends @Nullable Object> implements AuthorizationManager<T> {

private static final String ROLE_PREFIX = "ROLE_";

Expand Down Expand Up @@ -65,7 +65,7 @@ public void setRoleHierarchy(RoleHierarchy roleHierarchy) {
* @param <T> the type of object being authorized
* @return the new instance
*/
public static <T> AuthorityAuthorizationManager<T> hasRole(String role) {
public static <T extends @Nullable Object> AuthorityAuthorizationManager<T> hasRole(String role) {
Assert.notNull(role, "role cannot be null");
Assert.isTrue(!role.startsWith(ROLE_PREFIX), () -> role + " should not start with " + ROLE_PREFIX + " since "
+ ROLE_PREFIX + " is automatically prepended when using hasRole. Consider using hasAuthority instead.");
Expand All @@ -79,7 +79,7 @@ public static <T> AuthorityAuthorizationManager<T> hasRole(String role) {
* @param <T> the type of object being authorized
* @return the new instance
*/
public static <T> AuthorityAuthorizationManager<T> hasAuthority(String authority) {
public static <T extends @Nullable Object> AuthorityAuthorizationManager<T> hasAuthority(String authority) {
Assert.notNull(authority, "authority cannot be null");
return new AuthorityAuthorizationManager<>(authority);
}
Expand All @@ -92,7 +92,7 @@ public static <T> AuthorityAuthorizationManager<T> hasAuthority(String authority
* @param <T> the type of object being authorized
* @return the new instance
*/
public static <T> AuthorityAuthorizationManager<T> hasAnyRole(String... roles) {
public static <T extends @Nullable Object> AuthorityAuthorizationManager<T> hasAnyRole(String... roles) {
return hasAnyRole(ROLE_PREFIX, roles);
}

Expand All @@ -104,7 +104,8 @@ public static <T> AuthorityAuthorizationManager<T> hasAnyRole(String... roles) {
* @param <T> the type of object being authorized
* @return the new instance
*/
public static <T> AuthorityAuthorizationManager<T> hasAnyRole(String rolePrefix, String[] roles) {
public static <T extends @Nullable Object> AuthorityAuthorizationManager<T> hasAnyRole(String rolePrefix,
String[] roles) {
Assert.notNull(rolePrefix, "rolePrefix cannot be null");
Assert.notEmpty(roles, "roles cannot be empty");
Assert.noNullElements(roles, "roles cannot contain null values");
Expand All @@ -118,7 +119,7 @@ public static <T> AuthorityAuthorizationManager<T> hasAnyRole(String rolePrefix,
* @param <T> the type of object being authorized
* @return the new instance
*/
public static <T> AuthorityAuthorizationManager<T> hasAnyAuthority(String... authorities) {
public static <T extends @Nullable Object> AuthorityAuthorizationManager<T> hasAnyAuthority(String... authorities) {
Assert.notEmpty(authorities, "authorities cannot be empty");
Assert.noNullElements(authorities, "authorities cannot contain null values");
return new AuthorityAuthorizationManager<>(authorities);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ private AuthorizationManagerFactories() {
* @param <T> the secured object type
* @return a factory configured with the required authorities
*/
public static <T> AdditionalRequiredFactorsBuilder<T> multiFactor() {
public static <T extends @Nullable Object> AdditionalRequiredFactorsBuilder<T> multiFactor() {
return new AdditionalRequiredFactorsBuilder<>();
}

Expand All @@ -58,7 +58,7 @@ public static <T> AdditionalRequiredFactorsBuilder<T> multiFactor() {
* @param <T> the type for the {@link DefaultAuthorizationManagerFactory}
* @author Rob Winch
*/
public static final class AdditionalRequiredFactorsBuilder<T> {
public static final class AdditionalRequiredFactorsBuilder<T extends @Nullable Object> {

private final AllRequiredFactorsAuthorizationManager.Builder<T> factors = AllRequiredFactorsAuthorizationManager
.builder();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public final class AuthorizationManagers {
* @return the {@link AuthorizationManager} to use
*/
@SafeVarargs
public static <T> AuthorizationManager<T> anyOf(AuthorizationManager<T>... managers) {
public static <T extends @Nullable Object> AuthorizationManager<T> anyOf(AuthorizationManager<T>... managers) {
return anyOf(new AuthorizationDecision(false), managers);
}

Expand All @@ -58,8 +58,8 @@ public static <T> AuthorizationManager<T> anyOf(AuthorizationManager<T>... manag
* @since 6.3
*/
@SafeVarargs
public static <T> AuthorizationManager<T> anyOf(AuthorizationDecision allAbstainDefaultDecision,
AuthorizationManager<T>... managers) {
public static <T extends @Nullable Object> AuthorizationManager<T> anyOf(
AuthorizationDecision allAbstainDefaultDecision, AuthorizationManager<T>... managers) {
return (AuthorizationManagerCheckAdapter<T>) (Supplier<? extends @Nullable Authentication> authentication,
T object) -> {
List<AuthorizationResult> results = new ArrayList<>();
Expand Down Expand Up @@ -89,7 +89,7 @@ public static <T> AuthorizationManager<T> anyOf(AuthorizationDecision allAbstain
* @return the {@link AuthorizationManager} to use
*/
@SafeVarargs
public static <T> AuthorizationManager<T> allOf(AuthorizationManager<T>... managers) {
public static <T extends @Nullable Object> AuthorizationManager<T> allOf(AuthorizationManager<T>... managers) {
return allOf(new AuthorizationDecision(true), managers);
}

Expand All @@ -105,8 +105,8 @@ public static <T> AuthorizationManager<T> allOf(AuthorizationManager<T>... manag
* @since 6.3
*/
@SafeVarargs
public static <T> AuthorizationManager<T> allOf(AuthorizationDecision allAbstainDefaultDecision,
AuthorizationManager<T>... managers) {
public static <T extends @Nullable Object> AuthorizationManager<T> allOf(
AuthorizationDecision allAbstainDefaultDecision, AuthorizationManager<T>... managers) {
return (AuthorizationManagerCheckAdapter<T>) (Supplier<? extends @Nullable Authentication> authentication,
T object) -> {
List<AuthorizationResult> results = new ArrayList<>();
Expand Down Expand Up @@ -136,7 +136,7 @@ public static <T> AuthorizationManager<T> allOf(AuthorizationDecision allAbstain
* @return the reversing {@link AuthorizationManager}
* @since 6.3
*/
public static <T> AuthorizationManager<T> not(AuthorizationManager<T> manager) {
public static <T extends @Nullable Object> AuthorizationManager<T> not(AuthorizationManager<T> manager) {
return (Supplier<? extends @Nullable Authentication> authentication, T object) -> {
AuthorizationResult result = manager.authorize(authentication, object);
if (result == null) {
Expand Down Expand Up @@ -183,7 +183,7 @@ public String toString() {

}

private interface AuthorizationManagerCheckAdapter<T> extends AuthorizationManager<T> {
private interface AuthorizationManagerCheckAdapter<T extends @Nullable Object> extends AuthorizationManager<T> {

@Override
AuthorizationResult authorize(Supplier<? extends @Nullable Authentication> authentication, T object);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
* @author Rob Winch
* @since 7.1
*/
public final class ConditionalAuthorizationManager<T> implements AuthorizationManager<T> {
public final class ConditionalAuthorizationManager<T extends @Nullable Object> implements AuthorizationManager<T> {

private final Predicate<Authentication> condition;

Expand Down Expand Up @@ -76,7 +76,7 @@ private ConditionalAuthorizationManager(Predicate<Authentication> condition, Aut
* not be null)
* @return the builder
*/
public static <T> Builder<T> when(Predicate<Authentication> condition) {
public static <T extends @Nullable Object> Builder<T> when(Predicate<Authentication> condition) {
Assert.notNull(condition, "condition cannot be null");
return new Builder<>(condition);
}
Expand All @@ -98,7 +98,7 @@ public static <T> Builder<T> when(Predicate<Authentication> condition) {
* @author Rob Winch
* @since 7.1
*/
public static final class Builder<T> {
public static final class Builder<T extends @Nullable Object> {

private final Predicate<Authentication> condition;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
* @since 7.0
* @see AllAuthoritiesAuthorizationManager
*/
public class RequiredAuthoritiesAuthorizationManager<T> implements AuthorizationManager<T> {
public class RequiredAuthoritiesAuthorizationManager<T extends @Nullable Object> implements AuthorizationManager<T> {

private final RequiredAuthoritiesRepository authorities;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
* @author Max Batischev
* @since 6.5
*/
public final class SingleResultAuthorizationManager<C> implements AuthorizationManager<C> {
public final class SingleResultAuthorizationManager<C extends @Nullable Object> implements AuthorizationManager<C> {

private static final SingleResultAuthorizationManager<?> DENY_MANAGER = new SingleResultAuthorizationManager<>(
new AuthorizationDecision(false));
Expand All @@ -54,12 +54,12 @@ public AuthorizationResult authorize(Supplier<? extends @Nullable Authentication
}

@SuppressWarnings("unchecked")
public static <C> SingleResultAuthorizationManager<C> denyAll() {
public static <C extends @Nullable Object> SingleResultAuthorizationManager<C> denyAll() {
return (SingleResultAuthorizationManager<C>) DENY_MANAGER;
}

@SuppressWarnings("unchecked")
public static <C> SingleResultAuthorizationManager<C> permitAll() {
public static <C extends @Nullable Object> SingleResultAuthorizationManager<C> permitAll() {
return (SingleResultAuthorizationManager<C>) PERMIT_MANAGER;
}

Expand Down
Loading