From 432e9c4fd61d77419890016c78b58f583aaae9f8 Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Sun, 21 Jul 2024 16:06:17 +0900 Subject: [PATCH 01/16] =?UTF-8?q?feat=20:=20=ED=99=88=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EB=A9=A4=EB=B2=84=20=EC=A0=95=EB=B3=B4=20=ED=98=B8=EC=B6=9C?= =?UTF-8?q?=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/controller/MyHomeController.java | 32 +++++++++++++++++++ .../member/dto/response/MyHomeResponse.java | 19 +++++++++++ .../depromeet/spot/domain/member/MyHome.java | 3 ++ .../usecase/port/in/member/MyHomeUsecase.java | 8 +++++ .../usecase/service/member/MyHomeService.java | 24 ++++++++++++++ 5 files changed, 86 insertions(+) create mode 100644 application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java create mode 100644 application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java create mode 100644 domain/src/main/java/org/depromeet/spot/domain/member/MyHome.java create mode 100644 usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java create mode 100644 usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java diff --git a/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java b/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java new file mode 100644 index 00000000..8f944abc --- /dev/null +++ b/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java @@ -0,0 +1,32 @@ +package org.depromeet.spot.application.member.controller; + +import org.depromeet.spot.application.member.dto.response.MyHomeResponse; +import org.depromeet.spot.domain.member.MyHome; +import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@RestController +@RequiredArgsConstructor +@Slf4j +@Tag(name = "홈 피드") +@RequestMapping("/api/v1/") +public class MyHomeController { + + private final MyHomeUsecase myHomeUsecase; + + @GetMapping("/myHome") + @ResponseStatus(HttpStatus.OK) + public MyHomeResponse findMyHomeInfo() { + MyHome myHome = myHomeUsecase.findMyHomeInfo(); + + return new MyHomeResponse(); + } +} diff --git a/application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java b/application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java new file mode 100644 index 00000000..fe359639 --- /dev/null +++ b/application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java @@ -0,0 +1,19 @@ +package org.depromeet.spot.application.member.dto.response; + +import java.time.LocalDateTime; +import java.util.List; + +public record MyHomeResponse( + String profileImageUrl, // 멤버 + String nickname, // 멤버 + Long level, // 멤버 + Long totalReviewCount, // 리뷰 + String teamImageUrl, // 팀 + String stadiumName, // 리뷰 + LocalDateTime date, // 리뷰 + List reviewImages, // 리뷰 + String blockName, // 리뷰 + Long seatNumber // 리뷰 + ) { + record ImageResponse(Long id, String url) {} +} diff --git a/domain/src/main/java/org/depromeet/spot/domain/member/MyHome.java b/domain/src/main/java/org/depromeet/spot/domain/member/MyHome.java new file mode 100644 index 00000000..a431ea5a --- /dev/null +++ b/domain/src/main/java/org/depromeet/spot/domain/member/MyHome.java @@ -0,0 +1,3 @@ +package org.depromeet.spot.domain.member; + +public class MyHome {} diff --git a/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java b/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java new file mode 100644 index 00000000..1634f704 --- /dev/null +++ b/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java @@ -0,0 +1,8 @@ +package org.depromeet.spot.usecase.port.in.member; + +import org.depromeet.spot.domain.member.MyHome; + +public interface MyHomeUsecase { + + MyHome findMyHomeInfo(); +} diff --git a/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java b/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java new file mode 100644 index 00000000..c567e51b --- /dev/null +++ b/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java @@ -0,0 +1,24 @@ +package org.depromeet.spot.usecase.service.member; + +import org.depromeet.spot.domain.member.MyHome; +import org.depromeet.spot.usecase.port.in.member.MemberUsecase; +import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase; +import org.depromeet.spot.usecase.port.in.team.ReadBaseballTeamUsecase; +import org.springframework.stereotype.Service; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class MyHomeService implements MyHomeUsecase { + + private final ReadBaseballTeamUsecase readBaseballTeamUsecase; + + private final MemberUsecase memberUsecase; + + @Override + public MyHome findMyHomeInfo() { + + return null; + } +} From 5d83b940390cf03c1cde95c904952c74d3d25fc1 Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Sun, 21 Jul 2024 19:22:09 +0900 Subject: [PATCH 02/16] =?UTF-8?q?feat=20:=20=ED=99=88=20=ED=94=BC=EB=93=9C?= =?UTF-8?q?=20=ED=99=94=EB=A9=B4=20=ED=95=84=ED=84=B0=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spot/application/common/config/SecurityConfig.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/org/depromeet/spot/application/common/config/SecurityConfig.java b/application/src/main/java/org/depromeet/spot/application/common/config/SecurityConfig.java index 5c0f6fd7..9ac39369 100644 --- a/application/src/main/java/org/depromeet/spot/application/common/config/SecurityConfig.java +++ b/application/src/main/java/org/depromeet/spot/application/common/config/SecurityConfig.java @@ -28,7 +28,8 @@ public class SecurityConfig { "/api-docs/**", "/swagger-ui.html", "/favicon.ico/**", - "/api/v1/members/**" + "/api/v1/members/**", + "/api/v1/myHome" }; @Bean From cd4dc9792dbfc75b0b81648354aee48d1dd21197 Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Sun, 21 Jul 2024 19:39:27 +0900 Subject: [PATCH 03/16] =?UTF-8?q?feat=20:=20=ED=99=88=20=ED=94=BC=EB=93=9C?= =?UTF-8?q?=20=ED=99=94=EB=A9=B4=20=EC=A1=B0=ED=9A=8C=20API=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/controller/MyHomeController.java | 20 +++++++++++++++---- .../member/dto/response/MyHomeResponse.java | 16 ++++++++++++++- .../depromeet/spot/domain/member/MyHome.java | 3 --- .../usecase/port/in/member/MyHomeUsecase.java | 19 ++++++++++++++++-- .../usecase/service/member/MyHomeService.java | 16 ++++++++++----- 5 files changed, 59 insertions(+), 15 deletions(-) delete mode 100644 domain/src/main/java/org/depromeet/spot/domain/member/MyHome.java diff --git a/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java b/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java index 8f944abc..f1b10c99 100644 --- a/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java +++ b/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java @@ -1,10 +1,12 @@ package org.depromeet.spot.application.member.controller; +import org.depromeet.spot.application.common.jwt.JwtTokenUtil; import org.depromeet.spot.application.member.dto.response.MyHomeResponse; -import org.depromeet.spot.domain.member.MyHome; import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase; +import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase.MyHome; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; @@ -22,11 +24,21 @@ public class MyHomeController { private final MyHomeUsecase myHomeUsecase; + private final JwtTokenUtil jwtTokenUtil; + @GetMapping("/myHome") @ResponseStatus(HttpStatus.OK) - public MyHomeResponse findMyHomeInfo() { - MyHome myHome = myHomeUsecase.findMyHomeInfo(); + public MyHomeResponse findMyHomeInfo(@RequestHeader("Authorization") String jwtToken) { + // 접두사 제거 + if (jwtToken.startsWith("Bearer ")) { + jwtToken = jwtToken.substring(7); + } + // TODO : 토큰 내의 memberId Long 타입으로 변경 + // TODO : 토큰에서 memberId 가져오는 AOP 추가 + String memberIdStr = jwtTokenUtil.getIdFromJWT(jwtToken); + Long memberId = Long.parseLong(memberIdStr); + MyHome myHome = myHomeUsecase.findMyHomeInfo(memberId); - return new MyHomeResponse(); + return MyHomeResponse.from(myHome); } } diff --git a/application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java b/application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java index fe359639..83a2c537 100644 --- a/application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java +++ b/application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java @@ -3,10 +3,15 @@ import java.time.LocalDateTime; import java.util.List; +import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase.MyHome; + +import lombok.Builder; + +@Builder public record MyHomeResponse( String profileImageUrl, // 멤버 String nickname, // 멤버 - Long level, // 멤버 + Integer level, // 멤버 Long totalReviewCount, // 리뷰 String teamImageUrl, // 팀 String stadiumName, // 리뷰 @@ -15,5 +20,14 @@ public record MyHomeResponse( String blockName, // 리뷰 Long seatNumber // 리뷰 ) { + public static MyHomeResponse from(MyHome myHome) { + return MyHomeResponse.builder() + .profileImageUrl(myHome.getMember().getProfileImage()) + .nickname(myHome.getMember().getNickname()) + .level(myHome.getMember().getLevel()) + .teamImageUrl(myHome.getBaseballTeam().getLogo()) + .build(); + } + record ImageResponse(Long id, String url) {} } diff --git a/domain/src/main/java/org/depromeet/spot/domain/member/MyHome.java b/domain/src/main/java/org/depromeet/spot/domain/member/MyHome.java deleted file mode 100644 index a431ea5a..00000000 --- a/domain/src/main/java/org/depromeet/spot/domain/member/MyHome.java +++ /dev/null @@ -1,3 +0,0 @@ -package org.depromeet.spot.domain.member; - -public class MyHome {} diff --git a/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java b/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java index 1634f704..c090261a 100644 --- a/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java +++ b/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java @@ -1,8 +1,23 @@ package org.depromeet.spot.usecase.port.in.member; -import org.depromeet.spot.domain.member.MyHome; +import org.depromeet.spot.domain.member.Member; +import org.depromeet.spot.domain.review.Review; +import org.depromeet.spot.domain.team.BaseballTeam; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; public interface MyHomeUsecase { - MyHome findMyHomeInfo(); + MyHome findMyHomeInfo(Long memberId); + + @Builder + @Getter + @AllArgsConstructor + class MyHome { + Member member; + BaseballTeam baseballTeam; + Review review; + } } diff --git a/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java b/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java index c567e51b..ae554210 100644 --- a/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java +++ b/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java @@ -1,8 +1,9 @@ package org.depromeet.spot.usecase.service.member; -import org.depromeet.spot.domain.member.MyHome; -import org.depromeet.spot.usecase.port.in.member.MemberUsecase; +import org.depromeet.spot.domain.member.Member; +import org.depromeet.spot.domain.team.BaseballTeam; import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase; +import org.depromeet.spot.usecase.port.in.member.ReadMemberUsecase; import org.depromeet.spot.usecase.port.in.team.ReadBaseballTeamUsecase; import org.springframework.stereotype.Service; @@ -14,11 +15,16 @@ public class MyHomeService implements MyHomeUsecase { private final ReadBaseballTeamUsecase readBaseballTeamUsecase; - private final MemberUsecase memberUsecase; + private final ReadMemberUsecase readMemberUsecase; @Override - public MyHome findMyHomeInfo() { + public MyHome findMyHomeInfo(Long memberId) { + BaseballTeam baseballTeam = readBaseballTeamUsecase.findById(memberId); - return null; + Member member = readMemberUsecase.findById(memberId); + + // TODO : 최근 리뷰 불러와서 데이터 함께 넣어주기. + + return MyHome.builder().baseballTeam(baseballTeam).member(member).build(); } } From df80a8d9fdabd5decfe43f6f1190bb9f80cf771f Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Sun, 21 Jul 2024 22:54:46 +0900 Subject: [PATCH 04/16] =?UTF-8?q?fix=20:=20=EC=A0=95=EC=83=81=EC=A0=81?= =?UTF-8?q?=EC=9D=B8=20=ED=86=A0=ED=81=B0=EC=9D=84=20=EC=86=8C=EC=9C=A0?= =?UTF-8?q?=ED=95=B4=EB=8F=84=20401=20=EC=98=A4=EB=A5=98=EA=B0=80=20?= =?UTF-8?q?=EB=82=98=EB=8D=98=20=EA=B2=83=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spot/application/common/jwt/JwtAuthenticationFilter.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtAuthenticationFilter.java b/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtAuthenticationFilter.java index 1026f744..5542d636 100644 --- a/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtAuthenticationFilter.java +++ b/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtAuthenticationFilter.java @@ -54,11 +54,12 @@ protected void doFilterInternal( if (header.startsWith("Bearer")) { String access_token = header.split(" ")[1]; if (jwtTokenUtil.isValidateToken(access_token)) { - String memberId = jwtTokenUtil.getIdFromJWT(access_token); + Long memberId = jwtTokenUtil.getIdFromJWT(access_token); MemberRole role = MemberRole.valueOf(jwtTokenUtil.getRoleFromJWT(access_token)); JwtToken jwtToken = new JwtToken(memberId, role); SecurityContextHolder.getContext().setAuthentication(jwtToken); filterChain.doFilter(request, response); + return; } } // 토큰 검증 실패 -> Exception From dabbdf243050a8b47a296ceddd169b402cf0d46d Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Sun, 21 Jul 2024 22:55:12 +0900 Subject: [PATCH 05/16] =?UTF-8?q?build=20:=20aop=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/build.gradle.kts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/application/build.gradle.kts b/application/build.gradle.kts index 2d5e753d..e6c01bdd 100644 --- a/application/build.gradle.kts +++ b/application/build.gradle.kts @@ -23,6 +23,9 @@ dependencies { implementation("io.jsonwebtoken:jjwt-impl:0.11.5") implementation("io.jsonwebtoken:jjwt-jackson:0.11.5") + // aop + implementation("org.springframework.boot:spring-boot-starter-aop") + } // spring boot main application이므로 실행 가능한 jar를 생성한다. From 6cb84fa75fc6944b7ab63ff3dd0302bf9b74230b Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Sun, 21 Jul 2024 22:56:13 +0900 Subject: [PATCH 06/16] =?UTF-8?q?refactor=20:=20jwt=20=EB=82=B4=EC=9D=98?= =?UTF-8?q?=20memberId=20String=20->=20Long=20=ED=83=80=EC=9E=85=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spot/application/common/jwt/JwtToken.java | 2 +- .../spot/application/common/jwt/JwtTokenUtil.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtToken.java b/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtToken.java index 11d7a2dc..4ddc4914 100644 --- a/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtToken.java +++ b/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtToken.java @@ -14,7 +14,7 @@ @AllArgsConstructor public class JwtToken implements Authentication { // TODO : Authentication을 상속받고 UserDetail을 상속받은 커스텀 유저 정보 객체 생성해줘야함. - private String memberId; + private Long memberId; private MemberRole memberRole; @Override diff --git a/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtTokenUtil.java b/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtTokenUtil.java index 82485701..421e9143 100644 --- a/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtTokenUtil.java +++ b/application/src/main/java/org/depromeet/spot/application/common/jwt/JwtTokenUtil.java @@ -54,20 +54,19 @@ public String generateToken(Long memberId, MemberRole memberRole) { return Jwts.builder() .setHeader(createHeader()) - .setClaims(createClaims(memberRole)) - .setSubject(memberId.toString()) + .setClaims(createClaims(memberId, memberRole)) .setIssuedAt(current) .setExpiration(expiredAt) .signWith(SignatureAlgorithm.HS256, SECRETKEY.getBytes()) .compact(); } - public String getIdFromJWT(String token) { + public Long getIdFromJWT(String token) { return Jwts.parser() .setSigningKey(SECRETKEY.getBytes()) .parseClaimsJws(token) .getBody() - .get("id", String.class); + .get("memberId", Long.class); } public String getRoleFromJWT(String token) { @@ -108,9 +107,10 @@ private Map createHeader() { } // Claim -> 정보를 key-value 형태로 저장함. - private Map createClaims(MemberRole role) { + private Map createClaims(Long memberId, MemberRole role) { Map claims = new HashMap<>(); + claims.put("memberId", memberId); claims.put("role", role); return claims; } From f097e942f3c7e5a400b6fae813dcd577fd6cf7a9 Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Sun, 21 Jul 2024 23:00:56 +0900 Subject: [PATCH 07/16] =?UTF-8?q?feat=20:=20MemberId=20=EC=96=B4=EB=85=B8?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/annotation/MemberId.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 application/src/main/java/org/depromeet/spot/application/common/annotation/MemberId.java diff --git a/application/src/main/java/org/depromeet/spot/application/common/annotation/MemberId.java b/application/src/main/java/org/depromeet/spot/application/common/annotation/MemberId.java new file mode 100644 index 00000000..d40eb121 --- /dev/null +++ b/application/src/main/java/org/depromeet/spot/application/common/annotation/MemberId.java @@ -0,0 +1,18 @@ +package org.depromeet.spot.application.common.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 해당 어노테이션은 헤더에 담긴 Jwt 토큰에서 memberId 값을 가져오는 어노테이션입니다.
+ * 컨트롤러에서 사용하려는 메소드에 사용하면됩니다.
+ *
+ * 파라미터Long memberId를 추가해주어야 합니다.
+ * @Parameter(hidden = true) Long memberId로 하시면
+ * 해당 파라미터는 Swagger에서 제외됩니다. :) + */ +@Target(ElementType.METHOD) // 적용 대상 : 메소드 +@Retention(RetentionPolicy.RUNTIME) // 런타임에 사용할 수 있도록 설정 +public @interface MemberId {} From 45d49bf8d943832051f43bd8df6b360d98751366 Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Sun, 21 Jul 2024 23:01:23 +0900 Subject: [PATCH 08/16] =?UTF-8?q?feat=20:=20=ED=97=A4=EB=8D=94=EC=9D=98=20?= =?UTF-8?q?jwt=20=ED=86=A0=ED=81=B0=EC=97=90=EC=84=9C=20memberId=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8A=94=20AOP=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/aop/JwtTokenAspect.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 application/src/main/java/org/depromeet/spot/application/common/aop/JwtTokenAspect.java diff --git a/application/src/main/java/org/depromeet/spot/application/common/aop/JwtTokenAspect.java b/application/src/main/java/org/depromeet/spot/application/common/aop/JwtTokenAspect.java new file mode 100644 index 00000000..38a9ee4a --- /dev/null +++ b/application/src/main/java/org/depromeet/spot/application/common/aop/JwtTokenAspect.java @@ -0,0 +1,59 @@ +package org.depromeet.spot.application.common.aop; + +import jakarta.servlet.http.HttpServletRequest; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.depromeet.spot.application.common.jwt.JwtTokenUtil; +import org.springframework.stereotype.Component; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Component +@Aspect +@RequiredArgsConstructor +@Slf4j +public class JwtTokenAspect { + + private final JwtTokenUtil jwtTokenUtil; + + private final HttpServletRequest request; + + // Before 사용 시 + // [ProjectingArgumentResolverRegistrar.class]: BeanPostProcessor before instantiation of bean + // failed + // 에러 발생함. 이유 아직 모르겠음 ㅠㅠ + // + // Q) Around는 ProceedingJoinPoint를 사용하여 메소드를 호출할 수 있고, + // 메서드의 인자를 변경하거나 직접적으로 메소드의 실행을 제어가능함. + // Before는 실행 전에만 동작하면서 메소드의 인자를 바꾸거나 직접 제어가 불가능함. + @Around("@annotation(org.depromeet.spot.application.common.annotation.MemberId)") + public Object getMemberIdFromTokenAspect(ProceedingJoinPoint joinPoint) throws Throwable { + String jwtToken = request.getHeader("Authorization"); + String access_token = jwtToken.split(" ")[1]; + log.info("jwtToken : {}", access_token); + log.info("memberId : {}", jwtTokenUtil.getIdFromJWT(access_token)); + Long memberId = Long.valueOf(jwtTokenUtil.getIdFromJWT(access_token)); + if (memberId != null) { + // 동작하는 메소드의 시그니처를 가져옴. + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Object[] args = joinPoint.getArgs(); + Class[] parameterTypes = signature.getParameterTypes(); + String[] parameterNames = signature.getParameterNames(); + + for (int i = 0; i < args.length; i++) { + if ("memberId".equals(parameterNames[i]) && parameterTypes[i] == Long.class) { + args[i] = memberId; // memberId로 변경 + } + } + + // 변경된 인자로 메서드 실행 + return joinPoint.proceed(args); + } + + throw new RuntimeException("토큰 내에 memberId가 없습니다."); + } +} From 35f139442f2e96ff2d9262bd0239843b9cf4e039 Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Tue, 23 Jul 2024 01:34:42 +0900 Subject: [PATCH 09/16] =?UTF-8?q?refactor=20:=20CurrentMember=EB=A5=BC=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=ED=95=B4=20memberId=20=EA=B0=80=EC=A0=B8?= =?UTF-8?q?=EC=98=A4=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/controller/MyHomeController.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java b/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java index f1b10c99..e7a87b54 100644 --- a/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java +++ b/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java @@ -1,16 +1,17 @@ package org.depromeet.spot.application.member.controller; +import org.depromeet.spot.application.common.annotation.CurrentMember; import org.depromeet.spot.application.common.jwt.JwtTokenUtil; import org.depromeet.spot.application.member.dto.response.MyHomeResponse; import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase; import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase.MyHome; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -26,17 +27,10 @@ public class MyHomeController { private final JwtTokenUtil jwtTokenUtil; + @CurrentMember @GetMapping("/myHome") @ResponseStatus(HttpStatus.OK) - public MyHomeResponse findMyHomeInfo(@RequestHeader("Authorization") String jwtToken) { - // 접두사 제거 - if (jwtToken.startsWith("Bearer ")) { - jwtToken = jwtToken.substring(7); - } - // TODO : 토큰 내의 memberId Long 타입으로 변경 - // TODO : 토큰에서 memberId 가져오는 AOP 추가 - String memberIdStr = jwtTokenUtil.getIdFromJWT(jwtToken); - Long memberId = Long.parseLong(memberIdStr); + public MyHomeResponse findMyHomeInfo(@Parameter(hidden = true) Long memberId) { MyHome myHome = myHomeUsecase.findMyHomeInfo(memberId); return MyHomeResponse.from(myHome); From db231b96489513877d1923e436ffcb277b53e55d Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Tue, 23 Jul 2024 12:06:47 +0900 Subject: [PATCH 10/16] =?UTF-8?q?feat=20:=20(=ED=99=88=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=20API=20=EB=B6=84=EB=A6=AC)=20MemberInfo=20API=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/port/in/member/MemberUsecase.java | 19 +++++++++++++++++++ .../usecase/service/member/MemberService.java | 16 ++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MemberUsecase.java b/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MemberUsecase.java index e4308a59..3dc02dca 100644 --- a/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MemberUsecase.java +++ b/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MemberUsecase.java @@ -1,6 +1,11 @@ package org.depromeet.spot.usecase.port.in.member; import org.depromeet.spot.domain.member.Member; +import org.depromeet.spot.domain.team.BaseballTeam; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; public interface MemberUsecase { @@ -13,4 +18,18 @@ public interface MemberUsecase { String getAccessToken(String idCode); Boolean deleteMember(String accessToken); + + MemberInfo findMemberInfo(Long memberId); + + @Getter + @Builder + @AllArgsConstructor + class MemberInfo { + Member member; + BaseballTeam baseballTeam; + + public static MemberInfo of(Member member, BaseballTeam baseballTeam) { + return MemberInfo.builder().member(member).baseballTeam(baseballTeam).build(); + } + } } diff --git a/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MemberService.java b/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MemberService.java index 9a43b2ed..77f66a0d 100644 --- a/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MemberService.java +++ b/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MemberService.java @@ -5,7 +5,10 @@ import org.depromeet.spot.common.exception.member.MemberException.MemberNicknameConflictException; import org.depromeet.spot.common.exception.member.MemberException.MemberNotFoundException; import org.depromeet.spot.domain.member.Member; +import org.depromeet.spot.domain.team.BaseballTeam; import org.depromeet.spot.usecase.port.in.member.MemberUsecase; +import org.depromeet.spot.usecase.port.in.member.ReadMemberUsecase; +import org.depromeet.spot.usecase.port.in.team.ReadBaseballTeamUsecase; import org.depromeet.spot.usecase.port.out.member.MemberRepository; import org.depromeet.spot.usecase.port.out.oauth.OauthRepository; import org.springframework.stereotype.Service; @@ -21,6 +24,10 @@ public class MemberService implements MemberUsecase { private final MemberRepository memberRepository; + private final ReadMemberUsecase readMemberUsecase; + + private final ReadBaseballTeamUsecase readBaseballTeamUsecase; + @Override public Member create(String accessToken, Member member) { if (memberRepository.existsByNickname(member.getNickname())) { @@ -64,6 +71,7 @@ public String getAccessToken(String idCode) { public Boolean deleteMember(String accessToken) { Member memberResult = oauthRepository.getLoginUserInfo(accessToken); Optional existedMember = memberRepository.findByIdToken(memberResult.getIdToken()); + // 멤버 없으면 오류 출력 if (existedMember.isEmpty()) { throw new MemberNotFoundException(); @@ -71,4 +79,12 @@ public Boolean deleteMember(String accessToken) { memberRepository.deleteByIdToken(memberResult.getIdToken()); return Boolean.TRUE; } + + @Override + public MemberInfo findMemberInfo(Long memberId) { + Member member = readMemberUsecase.findById(memberId); + BaseballTeam baseballTeam = readBaseballTeamUsecase.findById(member.getTeamId()); + + return MemberInfo.of(member, baseballTeam); + } } From e1c7bce9cf25a4bbbc5faf49f117252b2e728dce Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Tue, 23 Jul 2024 12:07:22 +0900 Subject: [PATCH 11/16] =?UTF-8?q?refactor=20:=20(=ED=99=88=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=20API=20=EB=B6=84=EB=A6=AC)=20MemberInfo=EB=A7=8C=20?= =?UTF-8?q?=EC=A0=9C=EA=B3=B5=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/controller/MemberController.java | 12 ++++++ .../member/controller/MyHomeController.java | 38 ------------------- .../usecase/port/in/member/MyHomeUsecase.java | 23 ----------- .../usecase/service/member/MyHomeService.java | 30 --------------- 4 files changed, 12 insertions(+), 91 deletions(-) delete mode 100644 application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java delete mode 100644 usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java delete mode 100644 usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java diff --git a/application/src/main/java/org/depromeet/spot/application/member/controller/MemberController.java b/application/src/main/java/org/depromeet/spot/application/member/controller/MemberController.java index 95ba54ec..fdfa2e46 100644 --- a/application/src/main/java/org/depromeet/spot/application/member/controller/MemberController.java +++ b/application/src/main/java/org/depromeet/spot/application/member/controller/MemberController.java @@ -2,11 +2,14 @@ import jakarta.validation.Valid; +import org.depromeet.spot.application.common.annotation.CurrentMember; import org.depromeet.spot.application.common.jwt.JwtTokenUtil; import org.depromeet.spot.application.member.dto.request.RegisterReq; import org.depromeet.spot.application.member.dto.response.JwtTokenResponse; +import org.depromeet.spot.application.member.dto.response.MyHomeResponse; import org.depromeet.spot.domain.member.Member; import org.depromeet.spot.usecase.port.in.member.MemberUsecase; +import org.depromeet.spot.usecase.port.in.member.MemberUsecase.MemberInfo; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -97,4 +100,13 @@ public Boolean deleteMember( // TODO : (개발용) 유저 탈퇴 아님! 단순 유저 삭제만 진행함. return memberUsecase.deleteMember(accessToken); } + + @CurrentMember + @GetMapping("/memberInfo") + @ResponseStatus(HttpStatus.OK) + public MyHomeResponse findMyHomeInfo(@Parameter(hidden = true) Long memberId) { + MemberInfo memberInfo = memberUsecase.findMemberInfo(memberId); + + return MyHomeResponse.from(memberInfo); + } } diff --git a/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java b/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java deleted file mode 100644 index e7a87b54..00000000 --- a/application/src/main/java/org/depromeet/spot/application/member/controller/MyHomeController.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.depromeet.spot.application.member.controller; - -import org.depromeet.spot.application.common.annotation.CurrentMember; -import org.depromeet.spot.application.common.jwt.JwtTokenUtil; -import org.depromeet.spot.application.member.dto.response.MyHomeResponse; -import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase; -import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase.MyHome; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.bind.annotation.RestController; - -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -@RestController -@RequiredArgsConstructor -@Slf4j -@Tag(name = "홈 피드") -@RequestMapping("/api/v1/") -public class MyHomeController { - - private final MyHomeUsecase myHomeUsecase; - - private final JwtTokenUtil jwtTokenUtil; - - @CurrentMember - @GetMapping("/myHome") - @ResponseStatus(HttpStatus.OK) - public MyHomeResponse findMyHomeInfo(@Parameter(hidden = true) Long memberId) { - MyHome myHome = myHomeUsecase.findMyHomeInfo(memberId); - - return MyHomeResponse.from(myHome); - } -} diff --git a/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java b/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java deleted file mode 100644 index c090261a..00000000 --- a/usecase/src/main/java/org/depromeet/spot/usecase/port/in/member/MyHomeUsecase.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.depromeet.spot.usecase.port.in.member; - -import org.depromeet.spot.domain.member.Member; -import org.depromeet.spot.domain.review.Review; -import org.depromeet.spot.domain.team.BaseballTeam; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -public interface MyHomeUsecase { - - MyHome findMyHomeInfo(Long memberId); - - @Builder - @Getter - @AllArgsConstructor - class MyHome { - Member member; - BaseballTeam baseballTeam; - Review review; - } -} diff --git a/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java b/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java deleted file mode 100644 index ae554210..00000000 --- a/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MyHomeService.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.depromeet.spot.usecase.service.member; - -import org.depromeet.spot.domain.member.Member; -import org.depromeet.spot.domain.team.BaseballTeam; -import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase; -import org.depromeet.spot.usecase.port.in.member.ReadMemberUsecase; -import org.depromeet.spot.usecase.port.in.team.ReadBaseballTeamUsecase; -import org.springframework.stereotype.Service; - -import lombok.RequiredArgsConstructor; - -@Service -@RequiredArgsConstructor -public class MyHomeService implements MyHomeUsecase { - - private final ReadBaseballTeamUsecase readBaseballTeamUsecase; - - private final ReadMemberUsecase readMemberUsecase; - - @Override - public MyHome findMyHomeInfo(Long memberId) { - BaseballTeam baseballTeam = readBaseballTeamUsecase.findById(memberId); - - Member member = readMemberUsecase.findById(memberId); - - // TODO : 최근 리뷰 불러와서 데이터 함께 넣어주기. - - return MyHome.builder().baseballTeam(baseballTeam).member(member).build(); - } -} From ffc05e50d1f88122dedb79ae5046fa5278f5b3f4 Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Tue, 23 Jul 2024 12:08:00 +0900 Subject: [PATCH 12/16] =?UTF-8?q?refactor=20:=20(=ED=99=88=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=20API=20=EB=B6=84=EB=A6=AC)=20MemberInfo=EB=A7=8C=20?= =?UTF-8?q?=EC=A0=9C=EA=B3=B5=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/dto/response/MyHomeResponse.java | 29 +++++-------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java b/application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java index 83a2c537..43732a03 100644 --- a/application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java +++ b/application/src/main/java/org/depromeet/spot/application/member/dto/response/MyHomeResponse.java @@ -1,33 +1,18 @@ package org.depromeet.spot.application.member.dto.response; -import java.time.LocalDateTime; -import java.util.List; - -import org.depromeet.spot.usecase.port.in.member.MyHomeUsecase.MyHome; +import org.depromeet.spot.usecase.port.in.member.MemberUsecase.MemberInfo; import lombok.Builder; @Builder public record MyHomeResponse( - String profileImageUrl, // 멤버 - String nickname, // 멤버 - Integer level, // 멤버 - Long totalReviewCount, // 리뷰 - String teamImageUrl, // 팀 - String stadiumName, // 리뷰 - LocalDateTime date, // 리뷰 - List reviewImages, // 리뷰 - String blockName, // 리뷰 - Long seatNumber // 리뷰 - ) { - public static MyHomeResponse from(MyHome myHome) { + String profileImageUrl, String nickname, Integer level, String teamImageUrl) { + public static MyHomeResponse from(MemberInfo memberInfo) { return MyHomeResponse.builder() - .profileImageUrl(myHome.getMember().getProfileImage()) - .nickname(myHome.getMember().getNickname()) - .level(myHome.getMember().getLevel()) - .teamImageUrl(myHome.getBaseballTeam().getLogo()) + .profileImageUrl(memberInfo.getMember().getProfileImage()) + .nickname(memberInfo.getMember().getNickname()) + .level(memberInfo.getMember().getLevel()) + .teamImageUrl(memberInfo.getBaseballTeam().getLogo()) .build(); } - - record ImageResponse(Long id, String url) {} } From 2ea6355a708d2872e836eaa160908fb51ee50e05 Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Tue, 23 Jul 2024 12:13:56 +0900 Subject: [PATCH 13/16] =?UTF-8?q?refactor=20:=20API=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=EB=AA=85=20=EB=B3=80=EA=B2=BD(findMemberInfo)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spot/application/member/controller/MemberController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/src/main/java/org/depromeet/spot/application/member/controller/MemberController.java b/application/src/main/java/org/depromeet/spot/application/member/controller/MemberController.java index fdfa2e46..43143917 100644 --- a/application/src/main/java/org/depromeet/spot/application/member/controller/MemberController.java +++ b/application/src/main/java/org/depromeet/spot/application/member/controller/MemberController.java @@ -104,7 +104,7 @@ public Boolean deleteMember( @CurrentMember @GetMapping("/memberInfo") @ResponseStatus(HttpStatus.OK) - public MyHomeResponse findMyHomeInfo(@Parameter(hidden = true) Long memberId) { + public MyHomeResponse findMemberInfo(@Parameter(hidden = true) Long memberId) { MemberInfo memberInfo = memberUsecase.findMemberInfo(memberId); return MyHomeResponse.from(memberInfo); From 332ad34cdadef0eeef06cad92861e5f9c8d9a848 Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Tue, 23 Jul 2024 12:17:30 +0900 Subject: [PATCH 14/16] =?UTF-8?q?refactor=20:=20(=ED=99=88=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=20API=20=EB=B6=84=EB=A6=AC)=20=EC=A0=9C=EA=B1=B0?= =?UTF-8?q?=EB=90=9C=20Home=20url=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spot/application/common/config/SecurityConfig.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/application/src/main/java/org/depromeet/spot/application/common/config/SecurityConfig.java b/application/src/main/java/org/depromeet/spot/application/common/config/SecurityConfig.java index 9ac39369..5c0f6fd7 100644 --- a/application/src/main/java/org/depromeet/spot/application/common/config/SecurityConfig.java +++ b/application/src/main/java/org/depromeet/spot/application/common/config/SecurityConfig.java @@ -28,8 +28,7 @@ public class SecurityConfig { "/api-docs/**", "/swagger-ui.html", "/favicon.ico/**", - "/api/v1/members/**", - "/api/v1/myHome" + "/api/v1/members/**" }; @Bean From 3b796b6904d416b7d1b7ea053ac2aabf95e5c241 Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Tue, 23 Jul 2024 13:59:42 +0900 Subject: [PATCH 15/16] =?UTF-8?q?refactor=20:=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=EB=90=9C=20=EC=BB=A4=EC=8A=A4=ED=85=80=20=EC=96=B4=EB=85=B8?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/annotation/MemberId.java | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 application/src/main/java/org/depromeet/spot/application/common/annotation/MemberId.java diff --git a/application/src/main/java/org/depromeet/spot/application/common/annotation/MemberId.java b/application/src/main/java/org/depromeet/spot/application/common/annotation/MemberId.java deleted file mode 100644 index d40eb121..00000000 --- a/application/src/main/java/org/depromeet/spot/application/common/annotation/MemberId.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.depromeet.spot.application.common.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 해당 어노테이션은 헤더에 담긴 Jwt 토큰에서 memberId 값을 가져오는 어노테이션입니다.
- * 컨트롤러에서 사용하려는 메소드에 사용하면됩니다.
- *
- * 파라미터Long memberId를 추가해주어야 합니다.
- * @Parameter(hidden = true) Long memberId로 하시면
- * 해당 파라미터는 Swagger에서 제외됩니다. :) - */ -@Target(ElementType.METHOD) // 적용 대상 : 메소드 -@Retention(RetentionPolicy.RUNTIME) // 런타임에 사용할 수 있도록 설정 -public @interface MemberId {} From 13bcdd0165f7a43658439e00e8119eb4b87caadc Mon Sep 17 00:00:00 2001 From: wjdwnsdnjs13 <67488973+wjdwnsdnjs13@users.noreply.github.com> Date: Tue, 23 Jul 2024 14:00:13 +0900 Subject: [PATCH 16/16] =?UTF-8?q?refactor=20:=20findMemberInfo=20=EC=9D=BC?= =?UTF-8?q?=EA=B8=B0=20=EC=A0=84=EC=9A=A9=20->=20readOnly=20=3D=20true=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/depromeet/spot/usecase/service/member/MemberService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MemberService.java b/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MemberService.java index 77f66a0d..21600c7b 100644 --- a/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MemberService.java +++ b/usecase/src/main/java/org/depromeet/spot/usecase/service/member/MemberService.java @@ -80,6 +80,7 @@ public Boolean deleteMember(String accessToken) { return Boolean.TRUE; } + @Transactional(readOnly = true) @Override public MemberInfo findMemberInfo(Long memberId) { Member member = readMemberUsecase.findById(memberId);