diff --git a/cakey-api/src/main/java/com/cakey/common/resolver/user/UserId.java b/cakey-api/src/main/java/com/cakey/common/resolver/user/UserId.java new file mode 100644 index 0000000..e04a367 --- /dev/null +++ b/cakey-api/src/main/java/com/cakey/common/resolver/user/UserId.java @@ -0,0 +1,11 @@ +package com.cakey.common.resolver.user; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.PARAMETER) +@Retention(RetentionPolicy.RUNTIME) +public @interface UserId { +} diff --git a/cakey-api/src/main/java/com/cakey/common/resolver/user/UserIdResolver.java b/cakey-api/src/main/java/com/cakey/common/resolver/user/UserIdResolver.java new file mode 100644 index 0000000..77198c0 --- /dev/null +++ b/cakey-api/src/main/java/com/cakey/common/resolver/user/UserIdResolver.java @@ -0,0 +1,28 @@ +package com.cakey.common.resolver.user; + +import org.springframework.core.MethodParameter; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; +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; + +@Component +public class UserIdResolver implements HandlerMethodArgumentResolver { + + @Override + public boolean supportsParameter(MethodParameter parameter) { + return parameter.getParameterType().equals(Long.class) + && parameter.hasParameterAnnotation(UserId.class); + + } + + @Override + public Object resolveArgument(MethodParameter parameter, + ModelAndViewContainer mavContainer, + NativeWebRequest webRequest, + WebDataBinderFactory binderFactory) { + return SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + } +}