diff --git a/src/main/java/fr/lucasdupont/security/CallerIdArgumentResolver.java b/src/main/java/fr/lucasdupont/security/CallerIdResolver.java similarity index 59% rename from src/main/java/fr/lucasdupont/security/CallerIdArgumentResolver.java rename to src/main/java/fr/lucasdupont/security/CallerIdResolver.java index 5e59da0..0e99c0c 100644 --- a/src/main/java/fr/lucasdupont/security/CallerIdArgumentResolver.java +++ b/src/main/java/fr/lucasdupont/security/CallerIdResolver.java @@ -1,28 +1,15 @@ package fr.lucasdupont.security; -import org.springframework.core.MethodParameter; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.oauth2.jwt.Jwt; import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken; -import org.springframework.web.bind.support.WebDataBinderFactory; -import org.springframework.web.context.request.NativeWebRequest; -import org.springframework.web.method.support.HandlerMethodArgumentResolver; -import org.springframework.web.method.support.ModelAndViewContainer; +import org.springframework.stereotype.Component; -public class CallerIdArgumentResolver implements HandlerMethodArgumentResolver { - - @Override - public boolean supportsParameter(MethodParameter parameter) { - return CallerId.class.isAssignableFrom(parameter.getParameterType()); - } - - @Override - public Object resolveArgument(MethodParameter parameter, - ModelAndViewContainer mavContainer, - NativeWebRequest webRequest, - WebDataBinderFactory binderFactory) throws IllegalAccessException { +@Component +public class CallerIdResolver { + public CallerId get() throws IllegalAccessException { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (!(auth instanceof JwtAuthenticationToken jwtAuth)) { throw new IllegalAccessException("Authentication is not of type JwtAuthenticationToken"); @@ -44,4 +31,5 @@ public class CallerIdArgumentResolver implements HandlerMethodArgumentResolver { return new CallerId(sub, CallerId.Type.USER); } } + } diff --git a/src/main/java/fr/lucasdupont/security/KeycloakAutoConfiguration.java b/src/main/java/fr/lucasdupont/security/KeycloakAutoConfiguration.java index 578dfeb..f214024 100644 --- a/src/main/java/fr/lucasdupont/security/KeycloakAutoConfiguration.java +++ b/src/main/java/fr/lucasdupont/security/KeycloakAutoConfiguration.java @@ -9,10 +9,6 @@ import org.springframework.security.config.annotation.web.configurers.AbstractHt import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; -import org.springframework.web.method.support.HandlerMethodArgumentResolver; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -import java.util.List; @AutoConfiguration @ConditionalOnClass(HttpSecurity.class) @@ -47,19 +43,4 @@ public class KeycloakAutoConfiguration { return new RequiredRoleFilter(props); } - @Bean - public WebMvcConfigurer callerIdArgumentResolverConfigurer(CallerIdArgumentResolver resolver) { - return new WebMvcConfigurer() { - @Override - public void addArgumentResolvers(List resolvers) { - resolvers.add(resolver); - } - }; - } - - @Bean - public CallerIdArgumentResolver callerIdArgumentResolver() { - return new CallerIdArgumentResolver(); - } - }