From b2aa565a379d35557436a4acd428e3a5d746ec26 Mon Sep 17 00:00:00 2001 From: Yerin Lee <91695537+lxxyxin@users.noreply.github.com> Date: Wed, 15 Jan 2025 01:54:12 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20UserId=20=EC=BB=A4=EC=8A=A4=ED=85=80?= =?UTF-8?q?=20=EC=96=B4=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=20=EB=B0=8F=20?= =?UTF-8?q?Resolver=EA=B5=AC=ED=98=84=20-=20#10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cakey/common/resolver/user/UserId.java | 11 ++++++++ .../common/resolver/user/UserIdResolver.java | 28 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 cakey-api/src/main/java/com/cakey/common/resolver/user/UserId.java create mode 100644 cakey-api/src/main/java/com/cakey/common/resolver/user/UserIdResolver.java 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(); + } +}