From 05daa204ec1ad536cd097414fe45b133ea3a7323 Mon Sep 17 00:00:00 2001 From: min-0 Date: Tue, 10 Sep 2024 00:36:15 +0900 Subject: [PATCH 01/20] =?UTF-8?q?=F0=9F=91=B7=20Update=20CI.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/CI.yml | 30 +++++++++--------------------- src/main/resources/application.yml | 6 +++--- 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 2bb2e6b..199b400 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -1,28 +1,16 @@ -name: Java CI with Gradle +name: Mapddang-Dev on: push: - branches: [ "main" ] + branches: [ "develop" ] pull_request: - branches: [ "main" ] + branches: [ "develop" ] env: AWS_REGION: ap-northeast-2 - AWS_S3_BUCKET: ${{ secrets.AWS_BUCKET_NAME }} - AWS_CODE_DEPLOY_APPLICATION: mapddang-CD - AWS_CODE_DEPLOY_GROUP: mapddang-CD-group - MYSQL_URL: ${{ secrets.MYSQL_URL }} - MYSQL_USERNAME: ${{ secrets.MYSQL_USERNAME }} - MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }} - APPLE_CLIENT_ID: ${{ secrets.APPLE_CLIENT_ID }} - APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }} - APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - APPLE_PRIVATE_KEY: ${{ secrets.APPLE_PRIVATE_KEY }} - JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }} - ACCESS_TOKEN_EXPIRE: ${{ secrets.ACCESS_TOKEN_EXPIRE }} - REFRESH_TOKEN_EXPIRE: ${{ secrets.REFRESH_TOKEN_EXPIRE }} - AWS_S3_ACCESS_KEY: ${{ secrets.AWS_S3_ACCESS_KEY }} - AWS_S3_SECRET_KEY: ${{ secrets.AWS_S3_SECRET_KEY }} + AWS_S3_BUCKET: mapddang-test-s3 + AWS_CODE_DEPLOY_APPLICATION: mapddang-test + AWS_CODE_DEPLOY_GROUP: mapddang-test-group jobs: build-with-gradle: @@ -49,8 +37,8 @@ jobs: - name: Setup AWS credential uses: aws-actions/configure-aws-credentials@v1 with: - aws-access-key-id: ${{ secrets.AWS_S3_ACCESS_KEY }} - aws-secret-access-key: ${{ secrets.AWS_S3_SECRET_KEY }} + aws-access-key-id: ${{ secrets.EC2_ACCESS_KEY_DEV }} + aws-secret-access-key: ${{ secrets.EC2_SECRET_KEY_DEV }} aws-region: ap-northeast-2 #ZIP 파일을 S3 버킷에 업로드 - name: Upload to AWS S3 @@ -58,7 +46,7 @@ jobs: aws deploy push \ --application-name ${{ env.AWS_CODE_DEPLOY_APPLICATION }} \ --ignore-hidden-files \ - --s3-location s3://$AWS_S3_BUCKET/cicdtest/$GITHUB_SHA.zip \ + --s3-location s3://$AWS_S3_BUCKET/cicd/$GITHUB_SHA.zip \ --source . #업로드된 ZIP 파일을 CodeDeploy로 배포 - name: AWS Code Deploy diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 1de3446..c8fdd2a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -36,12 +36,12 @@ jwt: cloud: aws: credentials: - accessKey: ${AWS_S3_ACCESS_KEY} - secretKey: ${AWS_S3_SECRET_KEY} + accessKey: ${EC2_ACCESS_KEY_DEV} + secretKey: ${EC2_SECRET_KEY_DEV} region: static: ap-northeast-2 stack: auto: false s3: - bucketName: ${AWS_BUCKET_NAME} + bucketName: ${AWS_BUCKET_NAME_DEV} From 7c02fb9dbc9225dd636a3ecbdfb2aa8a790f472d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EB=AF=BC=EC=98=81?= <66067273+min-0@users.noreply.github.com> Date: Tue, 10 Sep 2024 01:34:35 +0900 Subject: [PATCH 02/20] :construction_worker: Update CI.yml --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 199b400..6689997 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -55,4 +55,4 @@ jobs: --application-name ${{ env.AWS_CODE_DEPLOY_APPLICATION }} \ --deployment-config-name CodeDeployDefault.AllAtOnce \ --deployment-group-name ${{ env.AWS_CODE_DEPLOY_GROUP }} \ - --s3-location bucket=$AWS_S3_BUCKET,bundleType=zip,key=cicdtest/$GITHUB_SHA.zip \ No newline at end of file + --s3-location bucket=$AWS_S3_BUCKET,bundleType=zip,key=cicd/$GITHUB_SHA.zip From 0c4b8e1f2918633c06af838b69fb6340000aa432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EB=AF=BC=EC=98=81?= <66067273+min-0@users.noreply.github.com> Date: Tue, 10 Sep 2024 01:54:57 +0900 Subject: [PATCH 03/20] :construction_worker: Update appspec.yml --- appspec.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appspec.yml b/appspec.yml index b62a5f6..bd3794d 100644 --- a/appspec.yml +++ b/appspec.yml @@ -4,7 +4,7 @@ os: linux files: - source: / # 인스턴스에 복사할 디렉터리 경로 destination: /home/ec2-user/mapddang-back # 인스턴스에서 파일이 복사되는 위치 - overwrite: yes # 복사할 위치에 파일이 있는 경우 대체 + overwrite: true # 복사할 위치에 파일이 있는 경우 대체 permissions: - object: / # 권한이 지정되는 파일 or 디렉터리 @@ -18,4 +18,4 @@ hooks: ApplicationStart: # CodeDeploy의 ApplicationStart 단계에서 실행 - location: scripts/start.sh - timeout: 60 \ No newline at end of file + timeout: 60 From 3583506d9c80bd1cb53682debf2d956b264ed1aa Mon Sep 17 00:00:00 2001 From: min-0 Date: Tue, 10 Sep 2024 02:13:50 +0900 Subject: [PATCH 04/20] git pull --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 199b400..4ef90f1 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -55,4 +55,4 @@ jobs: --application-name ${{ env.AWS_CODE_DEPLOY_APPLICATION }} \ --deployment-config-name CodeDeployDefault.AllAtOnce \ --deployment-group-name ${{ env.AWS_CODE_DEPLOY_GROUP }} \ - --s3-location bucket=$AWS_S3_BUCKET,bundleType=zip,key=cicdtest/$GITHUB_SHA.zip \ No newline at end of file + --s3-location bucket=$AWS_S3_BUCKET,bundleType=zip,key=cicd/$GITHUB_SHA.zip \ No newline at end of file From 9cb1c456031a1e9e48eb724cfd4107b86a0ff9b3 Mon Sep 17 00:00:00 2001 From: min-0 Date: Tue, 10 Sep 2024 02:13:50 +0900 Subject: [PATCH 05/20] git pull --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 6689997..4ef90f1 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -55,4 +55,4 @@ jobs: --application-name ${{ env.AWS_CODE_DEPLOY_APPLICATION }} \ --deployment-config-name CodeDeployDefault.AllAtOnce \ --deployment-group-name ${{ env.AWS_CODE_DEPLOY_GROUP }} \ - --s3-location bucket=$AWS_S3_BUCKET,bundleType=zip,key=cicd/$GITHUB_SHA.zip + --s3-location bucket=$AWS_S3_BUCKET,bundleType=zip,key=cicd/$GITHUB_SHA.zip \ No newline at end of file From 1f5e33b69e8b639c8449a56d507c9ea8275108a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EB=AF=BC=EC=98=81?= <66067273+min-0@users.noreply.github.com> Date: Wed, 11 Sep 2024 22:46:25 +0900 Subject: [PATCH 06/20] Update CI.yml --- .github/workflows/CI.yml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 4026eee..b8072a2 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -44,10 +44,10 @@ jobs: - name: Upload to AWS S3 run: | aws deploy push \ - --application-name ${{ env.AWS_CODE_DEPLOY_APPLICATION }} \ - --ignore-hidden-files \ - --s3-location s3://$AWS_S3_BUCKET/cicd/$GITHUB_SHA.zip \ - --source . + --application-name ${{ env.AWS_CODE_DEPLOY_APPLICATION }} \ + --ignore-hidden-files \ + --s3-location s3://$AWS_S3_BUCKET/cicd/$GITHUB_SHA.zip \ + --source . #업로드된 ZIP 파일을 CodeDeploy로 배포 - name: AWS Code Deploy run: | @@ -55,8 +55,4 @@ jobs: --application-name ${{ env.AWS_CODE_DEPLOY_APPLICATION }} \ --deployment-config-name CodeDeployDefault.AllAtOnce \ --deployment-group-name ${{ env.AWS_CODE_DEPLOY_GROUP }} \ -<<<<<<< HEAD - --s3-location bucket=$AWS_S3_BUCKET,bundleType=zip,key=cicd/$GITHUB_SHA.zip -======= --s3-location bucket=$AWS_S3_BUCKET,bundleType=zip,key=cicd/$GITHUB_SHA.zip ->>>>>>> 0c4b8e1f2918633c06af838b69fb6340000aa432 From 3ba4e47e6a32f8b610b3bd43d0246939fb785ce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EB=AF=BC=EC=98=81?= <66067273+min-0@users.noreply.github.com> Date: Wed, 11 Sep 2024 23:00:48 +0900 Subject: [PATCH 07/20] Update SwaggerConfig.java --- src/main/java/com/dnd/dndtravel/config/SwaggerConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/dnd/dndtravel/config/SwaggerConfig.java b/src/main/java/com/dnd/dndtravel/config/SwaggerConfig.java index 329ebde..2a3e171 100644 --- a/src/main/java/com/dnd/dndtravel/config/SwaggerConfig.java +++ b/src/main/java/com/dnd/dndtravel/config/SwaggerConfig.java @@ -16,7 +16,7 @@ public class SwaggerConfig { public OpenAPI openAPI() { return new OpenAPI() .info(new Info() - .title("MAPDDANG API") + .title("MAPDDANG TEST API") .description("맵땅 앱 관련 API") .version("1.0.0")) .addServersItem(new Server().url("/").description("Generated Default Server URL")) //local에서는 http, aws에서는 https로 server url 설정됨 From 75b549e1cb1cc30f55a17ee646aa3c063abe48db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EB=AF=BC=EC=98=81?= <66067273+min-0@users.noreply.github.com> Date: Thu, 12 Sep 2024 00:03:15 +0900 Subject: [PATCH 08/20] Update application.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 토큰 만료 기간 수정 --- src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c8fdd2a..0a81a6c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -30,8 +30,8 @@ social-login: jwt: secret-key: ${JWT_SECRET_KEY} - access-token-expired-ms: ${ACCESS_TOKEN_EXPIRE} - refresh-token-expired-ms: ${REFRESH_TOKEN_EXPIRE} + access-token-expired-ms: ${ACCESS_TOKEN_EXPIRE_DEV} + refresh-token-expired-ms: ${REFRESH_TOKEN_EXPIRE_DEV} cloud: aws: From d5ef268a3660e82ba3fbdf23c0dd7da0d62ceb11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EB=AF=BC=EC=98=81?= <66067273+min-0@users.noreply.github.com> Date: Thu, 12 Sep 2024 01:18:28 +0900 Subject: [PATCH 09/20] Update CI.yml --- .github/workflows/CI.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b8072a2..df9a54e 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -11,6 +11,19 @@ env: AWS_S3_BUCKET: mapddang-test-s3 AWS_CODE_DEPLOY_APPLICATION: mapddang-test AWS_CODE_DEPLOY_GROUP: mapddang-test-group + MYSQL_URL_DEV: ${{ secrets.MYSQL_URL_DEV }} + MYSQL_USERNAME: ${{ secrets.MYSQL_USERNAME }} + MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }} + APPLE_CLIENT_ID: ${{ secrets.APPLE_CLIENT_ID }} + APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }} + APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} + APPLE_PRIVATE_KEY: ${{ secrets.APPLE_PRIVATE_KEY }} + JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }} + ACCESS_TOKEN_EXPIRE_DEV: ${{ secrets.ACCESS_TOKEN_EXPIRE_DEV }} + REFRESH_TOKEN_EXPIRE_DEV: ${{ secrets.REFRESH_TOKEN_EXPIRE_DEV }} + EC2_ACCESS_KEY_DEV: ${{ secrets.EC2_ACCESS_KEY_DEV }} + EC2_SECRET_KEY_DEV: ${{ secrets.EC2_SECRET_KEY_DEV }} + AWS_BUCKET_NAME_DEV: ${{ secrets.AWS_BUCKET_NAME_DEV }} jobs: build-with-gradle: From 6824ef0255cf2f01d44b0fc60c3beb3694f26cbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EB=AF=BC=EC=98=81?= <66067273+min-0@users.noreply.github.com> Date: Fri, 13 Sep 2024 17:28:55 +0900 Subject: [PATCH 10/20] Update application.yml --- src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 0a81a6c..3e83991 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -22,7 +22,7 @@ social-login: provider: apple: grant-type: authorization_code - client-id: ${APPLE_CLIENT_ID} + client-id: ${APPLE_CLIENT_ID_DEV} key-id: ${APPLE_KEY_ID} # 애플에서 제공하는 키의 ID team-id: ${APPLE_TEAM_ID} # 애플 개발자 계정의 팀 ID audience: https://appleid.apple.com From 1f68274e94fee0272673f2b15f43cbd6bfea33f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=A0=95=EB=AF=BC=EC=98=81?= <66067273+min-0@users.noreply.github.com> Date: Fri, 13 Sep 2024 18:02:58 +0900 Subject: [PATCH 11/20] =?UTF-8?q?CI.yml=20=EC=97=85=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index df9a54e..c709e00 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -14,7 +14,7 @@ env: MYSQL_URL_DEV: ${{ secrets.MYSQL_URL_DEV }} MYSQL_USERNAME: ${{ secrets.MYSQL_USERNAME }} MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }} - APPLE_CLIENT_ID: ${{ secrets.APPLE_CLIENT_ID }} + APPLE_CLIENT_ID_DEV: ${{ secrets.APPLE_CLIENT_ID_DEV }} APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} APPLE_PRIVATE_KEY: ${{ secrets.APPLE_PRIVATE_KEY }} From 8efb5688cad769987e776c81830ea863a9095266 Mon Sep 17 00:00:00 2001 From: min-0 Date: Tue, 24 Sep 2024 01:38:00 +0900 Subject: [PATCH 12/20] =?UTF-8?q?=F0=9F=90=9B=20Apple=20Revoke=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Controller에 @RequestParam로 변경, Service에 getAccessToken 코드 수정 --- .../com/dnd/dndtravel/auth/controller/AuthController.java | 2 +- .../com/dnd/dndtravel/auth/service/AppleOAuthService.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java b/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java index cd01533..cb29567 100644 --- a/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java +++ b/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java @@ -51,7 +51,7 @@ public ReissueTokenResponse reissueToken(@RequestBody ReIssueTokenRequest reissu } @DeleteMapping("/withdraw") - public void withdraw(@Valid @RequestBody AppleWithdrawRequest withdrawRequest, AuthenticationMember authenticationMember) { + public void withdraw(@Valid @RequestParam AppleWithdrawRequest withdrawRequest, AuthenticationMember authenticationMember) { // 1. Apple 서버에서 Access Token 받아오기 String accessToken = appleOAuthService.getAccessToken(withdrawRequest.authorizationCode()); diff --git a/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java b/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java index d0372ed..9aeb74b 100644 --- a/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java +++ b/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java @@ -88,13 +88,12 @@ private PrivateKey getPrivateKey() { } public String getAccessToken(String authorizationCode) { - AppleSocialTokenInfoResponse tokenInfo = appleClient.getIdToken( + return appleClient.getIdToken( appleProperties.getClientId(), generateClientSecret(), appleProperties.getGrantType(), authorizationCode - ); - return tokenInfo.accessToken(); + ).accessToken(); } public void revoke(String accessToken) { From 1a52f0e077cbb8b686eb4c570409f0400592ef0d Mon Sep 17 00:00:00 2001 From: min-0 Date: Wed, 25 Sep 2024 18:27:34 +0900 Subject: [PATCH 13/20] =?UTF-8?q?=E2=9C=A8=20AWS=20CloudWatch=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit application.yml 변경 --- src/main/resources/application.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 3e83991..33298de 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -17,6 +17,10 @@ spring: logging: level: root: INFO # 로그 레벨 설정 + file: + name: /home/ec2-user/mapddang-back/spring-boot-app.log + pattern: + file: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n" social-login: provider: From 287ce80869266ed0417f1ddfbd3584b88e444f0d Mon Sep 17 00:00:00 2001 From: min-0 Date: Sat, 28 Sep 2024 02:56:35 +0900 Subject: [PATCH 14/20] =?UTF-8?q?=F0=9F=94=A7=20=ED=86=A0=ED=81=B0=20?= =?UTF-8?q?=EB=A7=8C=EB=A3=8C=20=EC=8B=9C=EA=B0=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 33298de..d314cdf 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -34,8 +34,8 @@ social-login: jwt: secret-key: ${JWT_SECRET_KEY} - access-token-expired-ms: ${ACCESS_TOKEN_EXPIRE_DEV} - refresh-token-expired-ms: ${REFRESH_TOKEN_EXPIRE_DEV} + access-token-expired-ms: ${ACCESS_TOKEN_EXPIRE} + refresh-token-expired-ms: ${REFRESH_TOKEN_EXPIRE} cloud: aws: From 20ce9c9851af06a93454ef940408abc64d9aba99 Mon Sep 17 00:00:00 2001 From: min-0 Date: Thu, 17 Oct 2024 02:32:52 +0900 Subject: [PATCH 15/20] =?UTF-8?q?=E2=9C=A8=20=ED=9A=8C=EC=9B=90=20?= =?UTF-8?q?=ED=83=88=ED=87=B4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 애플 로그인 탈퇴 및 자체 회원 탈퇴 --- .../auth/controller/AuthController.java | 21 ++++++++++--------- .../request/AppleWithdrawRequest.java | 8 +++---- .../swagger/AuthControllerSwagger.java | 2 +- .../repository/RefreshTokenRepository.java | 2 +- .../auth/service/AppleOAuthService.java | 11 +++++----- .../auth/service/JwtTokenService.java | 6 +++--- .../service/dto/response/TokenResponse.java | 3 ++- .../MemberAttractionRepository.java | 8 +++---- .../repository/MemberRegionRepository.java | 2 +- .../member/service/MemberService.java | 7 ++----- 10 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java b/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java index cb29567..a9d5c70 100644 --- a/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java +++ b/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java @@ -3,17 +3,18 @@ import com.dnd.dndtravel.auth.controller.request.AppleWithdrawRequest; import com.dnd.dndtravel.auth.controller.request.ReIssueTokenRequest; import com.dnd.dndtravel.auth.controller.swagger.AuthControllerSwagger; +import com.dnd.dndtravel.auth.service.TokenDecoder; import com.dnd.dndtravel.auth.service.dto.response.AppleIdTokenPayload; import com.dnd.dndtravel.auth.service.AppleOAuthService; import com.dnd.dndtravel.auth.service.JwtTokenService; import com.dnd.dndtravel.auth.controller.request.AppleLoginRequest; +import com.dnd.dndtravel.auth.service.dto.response.AppleSocialTokenInfoResponse; import com.dnd.dndtravel.auth.service.dto.response.TokenResponse; import com.dnd.dndtravel.auth.service.dto.response.ReissueTokenResponse; import com.dnd.dndtravel.config.AuthenticationMember; import com.dnd.dndtravel.member.domain.Member; import com.dnd.dndtravel.member.service.MemberService; -import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -29,13 +30,14 @@ public class AuthController implements AuthControllerSwagger { @PostMapping("/login/oauth2/apple") public ResponseEntity appleOAuthLogin(@RequestBody AppleLoginRequest appleLoginRequest) { // 클라이언트에서 준 code 값으로 apple의 IdToken Payload를 얻어온다 - AppleIdTokenPayload tokenPayload = appleOAuthService.get(appleLoginRequest.appleToken()); + AppleSocialTokenInfoResponse tokenInfo = appleOAuthService.getTokenInfo(appleLoginRequest.appleToken()); + AppleIdTokenPayload tokenPayload = TokenDecoder.decodePayload(tokenInfo.idToken(), AppleIdTokenPayload.class); // apple에서 가져온 유저정보를 DB에 저장 Member member = memberService.saveMember(tokenPayload.email(), appleLoginRequest.selectedColor()); // 클라이언트와 주고받을 user token(access , refresh) 생성 - TokenResponse tokenResponse = jwtTokenService.generateTokens(member.getId()); + TokenResponse tokenResponse = jwtTokenService.generateTokens(member.getId(), tokenInfo.refreshToken()); // refresh token 재발급 필요시 if (tokenResponse == null) { @@ -51,14 +53,13 @@ public ReissueTokenResponse reissueToken(@RequestBody ReIssueTokenRequest reissu } @DeleteMapping("/withdraw") - public void withdraw(@Valid @RequestParam AppleWithdrawRequest withdrawRequest, AuthenticationMember authenticationMember) { - // 1. Apple 서버에서 Access Token 받아오기 - String accessToken = appleOAuthService.getAccessToken(withdrawRequest.authorizationCode()); + public ResponseEntity withdraw(@RequestBody AppleWithdrawRequest withdrawRequest, AuthenticationMember authenticationMember) { + // 애플 서버에 탈퇴 요청 + appleOAuthService.revoke(withdrawRequest.appleRefreshToken()); - // 2. Apple 서버에 탈퇴 요청 - appleOAuthService.revoke(accessToken); - - // 3. 자체 회원 탈퇴 진행 + // 자체 회원 탈퇴 memberService.withdrawMember(authenticationMember.id()); + + return ResponseEntity.ok().build(); } } \ No newline at end of file diff --git a/src/main/java/com/dnd/dndtravel/auth/controller/request/AppleWithdrawRequest.java b/src/main/java/com/dnd/dndtravel/auth/controller/request/AppleWithdrawRequest.java index 2966afc..de03221 100644 --- a/src/main/java/com/dnd/dndtravel/auth/controller/request/AppleWithdrawRequest.java +++ b/src/main/java/com/dnd/dndtravel/auth/controller/request/AppleWithdrawRequest.java @@ -10,9 +10,9 @@ 클라이언트에서 서버로 보내는 요청 */ public record AppleWithdrawRequest( - @Schema(description = "authorization code", requiredMode = REQUIRED) - @NotBlank(message = "authorization code는 필수 입니다.") - @Size(max = 300, message = "authorization code 형식이 아닙니다.") - String authorizationCode + @Schema(description = "Apple Refresh Token", requiredMode = REQUIRED) + @NotBlank(message = "appleRefreshTokend은 필수 입니다.") + @Size(max = 300, message = "token 형식이 아닙니다.") + String appleRefreshToken ) { } diff --git a/src/main/java/com/dnd/dndtravel/auth/controller/swagger/AuthControllerSwagger.java b/src/main/java/com/dnd/dndtravel/auth/controller/swagger/AuthControllerSwagger.java index 7effdd3..0560c7d 100644 --- a/src/main/java/com/dnd/dndtravel/auth/controller/swagger/AuthControllerSwagger.java +++ b/src/main/java/com/dnd/dndtravel/auth/controller/swagger/AuthControllerSwagger.java @@ -84,7 +84,7 @@ ReissueTokenResponse reissueToken( ) ) }) - void withdraw( + ResponseEntity withdraw( @Parameter(description = "요청 정보(authorization code)", required = true) AppleWithdrawRequest appleWithdrawRequest, @Parameter(hidden = true) diff --git a/src/main/java/com/dnd/dndtravel/auth/repository/RefreshTokenRepository.java b/src/main/java/com/dnd/dndtravel/auth/repository/RefreshTokenRepository.java index 83c7996..fe2e9bd 100644 --- a/src/main/java/com/dnd/dndtravel/auth/repository/RefreshTokenRepository.java +++ b/src/main/java/com/dnd/dndtravel/auth/repository/RefreshTokenRepository.java @@ -10,6 +10,6 @@ @Repository public interface RefreshTokenRepository extends JpaRepository { RefreshToken findByMemberId(Long memberId); - + void deleteByMemberId(Long memberId); Optional findByRefreshToken(String refreshToken); } \ No newline at end of file diff --git a/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java b/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java index 9aeb74b..92469cc 100644 --- a/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java +++ b/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java @@ -44,6 +44,7 @@ @RequiredArgsConstructor @Component +@Slf4j public class AppleOAuthService { private final AppleClient appleClient; private final AppleProperties appleProperties; @@ -87,22 +88,22 @@ private PrivateKey getPrivateKey() { } } - public String getAccessToken(String authorizationCode) { + public AppleSocialTokenInfoResponse getTokenInfo(String authorizationCode) { return appleClient.getIdToken( appleProperties.getClientId(), generateClientSecret(), appleProperties.getGrantType(), authorizationCode - ).accessToken(); + ); } - public void revoke(String accessToken) { + public void revoke(String refreshToken) { try { appleClient.revoke( appleProperties.getClientId(), generateClientSecret(), - accessToken, - "access_token" + refreshToken, + "refresh_token" ); } catch (Exception e) { throw new AppleTokenRevokeException(e); diff --git a/src/main/java/com/dnd/dndtravel/auth/service/JwtTokenService.java b/src/main/java/com/dnd/dndtravel/auth/service/JwtTokenService.java index 14f18bb..77e2fdf 100644 --- a/src/main/java/com/dnd/dndtravel/auth/service/JwtTokenService.java +++ b/src/main/java/com/dnd/dndtravel/auth/service/JwtTokenService.java @@ -18,14 +18,14 @@ public class JwtTokenService { private final RefreshTokenRepository refreshTokenRepository; @Transactional - public TokenResponse generateTokens(Long memberId) { + public TokenResponse generateTokens(Long memberId, String appleRefreshToken) { RefreshToken refreshToken = refreshTokenRepository.findByMemberId(memberId); // 리프레시 토큰이 없는경우 if (refreshToken == null) { String newRefreshToken = jwtProvider.refreshToken(); refreshTokenRepository.save(RefreshToken.of(memberId, newRefreshToken)); // refreshToken은 DB에 저장 - return new TokenResponse(jwtProvider.accessToken(memberId), newRefreshToken); + return new TokenResponse(jwtProvider.accessToken(memberId), newRefreshToken, appleRefreshToken); } // 리프레시 토큰이 만료됐으면 재발급 받으라고 멘트줌 @@ -37,7 +37,7 @@ public TokenResponse generateTokens(Long memberId) { refreshTokenRepository.delete(refreshToken); String newRefreshToken = jwtProvider.refreshToken(); refreshTokenRepository.save(RefreshToken.of(refreshToken.getMemberId(), newRefreshToken)); - return new TokenResponse(jwtProvider.accessToken(memberId), newRefreshToken); + return new TokenResponse(jwtProvider.accessToken(memberId), newRefreshToken, appleRefreshToken); } @Transactional diff --git a/src/main/java/com/dnd/dndtravel/auth/service/dto/response/TokenResponse.java b/src/main/java/com/dnd/dndtravel/auth/service/dto/response/TokenResponse.java index e1c096b..83c2d84 100644 --- a/src/main/java/com/dnd/dndtravel/auth/service/dto/response/TokenResponse.java +++ b/src/main/java/com/dnd/dndtravel/auth/service/dto/response/TokenResponse.java @@ -2,6 +2,7 @@ public record TokenResponse( String accessToken, - String refreshToken + String refreshToken, + String appleRefreshToken ) { } \ No newline at end of file diff --git a/src/main/java/com/dnd/dndtravel/map/repository/MemberAttractionRepository.java b/src/main/java/com/dnd/dndtravel/map/repository/MemberAttractionRepository.java index 8dc78fe..528c907 100644 --- a/src/main/java/com/dnd/dndtravel/map/repository/MemberAttractionRepository.java +++ b/src/main/java/com/dnd/dndtravel/map/repository/MemberAttractionRepository.java @@ -9,10 +9,10 @@ import com.dnd.dndtravel.map.repository.custom.MemberAttractionRepositoryCustom; public interface MemberAttractionRepository extends JpaRepository, - MemberAttractionRepositoryCustom { + MemberAttractionRepositoryCustom { - List findByMemberId(long memberId); - - Optional findByIdAndMemberId(long memberAttractionId, long memberId); + List findByMemberId(long memberId); + void deleteByMemberId(Long memberId); + Optional findByIdAndMemberId(long memberAttractionId, long memberId); } diff --git a/src/main/java/com/dnd/dndtravel/map/repository/MemberRegionRepository.java b/src/main/java/com/dnd/dndtravel/map/repository/MemberRegionRepository.java index f392f16..26f8bba 100644 --- a/src/main/java/com/dnd/dndtravel/map/repository/MemberRegionRepository.java +++ b/src/main/java/com/dnd/dndtravel/map/repository/MemberRegionRepository.java @@ -8,6 +8,6 @@ public interface MemberRegionRepository extends JpaRepository { List findByMemberId(Long memberId); - + void deleteByMemberId(Long memberId); MemberRegion findByMemberIdAndRegionId(Long memberId, Long regionId); } diff --git a/src/main/java/com/dnd/dndtravel/member/service/MemberService.java b/src/main/java/com/dnd/dndtravel/member/service/MemberService.java index 718f672..4cc9a02 100644 --- a/src/main/java/com/dnd/dndtravel/member/service/MemberService.java +++ b/src/main/java/com/dnd/dndtravel/member/service/MemberService.java @@ -1,6 +1,5 @@ package com.dnd.dndtravel.member.service; -import com.dnd.dndtravel.auth.repository.RefreshTokenRepository; import com.dnd.dndtravel.map.repository.MemberAttractionRepository; import com.dnd.dndtravel.map.repository.MemberRegionRepository; import com.dnd.dndtravel.auth.service.MemberNameGenerator; @@ -19,7 +18,6 @@ public class MemberService { private final MemberRepository memberRepository; private final MemberAttractionRepository memberAttractionRepository; private final MemberRegionRepository memberRegionRepository; - private final RefreshTokenRepository refreshTokenRepository; private final MemberNameGenerator memberNameGenerator; @Transactional @@ -34,10 +32,9 @@ public void withdrawMember(long memberId) { Member member = memberRepository.findById(memberId) .orElseThrow(() -> new RuntimeException("Member not found")); + memberAttractionRepository.deleteByMemberId(memberId); + memberRegionRepository.deleteByMemberId(memberId); memberRepository.delete(member); - memberAttractionRepository.deleteById(memberId); - memberRegionRepository.deleteById(memberId); - refreshTokenRepository.deleteById(memberId); } @Transactional(readOnly = true) From f8a6138f87ecad711394e990273222ba174d4669 Mon Sep 17 00:00:00 2001 From: min-0 Date: Thu, 17 Oct 2024 02:54:25 +0900 Subject: [PATCH 16/20] =?UTF-8?q?=E2=9C=A8=20=ED=9A=8C=EC=9B=90=20?= =?UTF-8?q?=ED=83=88=ED=87=B4=20=EC=8B=9C=20refresh=20token=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 서버-클라 사이에 사용되는 refresh token --- .../dnd/dndtravel/auth/repository/RefreshTokenRepository.java | 2 -- .../java/com/dnd/dndtravel/member/service/MemberService.java | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/dnd/dndtravel/auth/repository/RefreshTokenRepository.java b/src/main/java/com/dnd/dndtravel/auth/repository/RefreshTokenRepository.java index fe2e9bd..b9e899a 100644 --- a/src/main/java/com/dnd/dndtravel/auth/repository/RefreshTokenRepository.java +++ b/src/main/java/com/dnd/dndtravel/auth/repository/RefreshTokenRepository.java @@ -5,9 +5,7 @@ import com.dnd.dndtravel.auth.domain.RefreshToken; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -@Repository public interface RefreshTokenRepository extends JpaRepository { RefreshToken findByMemberId(Long memberId); void deleteByMemberId(Long memberId); diff --git a/src/main/java/com/dnd/dndtravel/member/service/MemberService.java b/src/main/java/com/dnd/dndtravel/member/service/MemberService.java index 4cc9a02..3db470c 100644 --- a/src/main/java/com/dnd/dndtravel/member/service/MemberService.java +++ b/src/main/java/com/dnd/dndtravel/member/service/MemberService.java @@ -1,5 +1,6 @@ package com.dnd.dndtravel.member.service; +import com.dnd.dndtravel.auth.repository.RefreshTokenRepository; import com.dnd.dndtravel.map.repository.MemberAttractionRepository; import com.dnd.dndtravel.map.repository.MemberRegionRepository; import com.dnd.dndtravel.auth.service.MemberNameGenerator; @@ -19,6 +20,7 @@ public class MemberService { private final MemberAttractionRepository memberAttractionRepository; private final MemberRegionRepository memberRegionRepository; private final MemberNameGenerator memberNameGenerator; + private final RefreshTokenRepository refreshTokenRepository; @Transactional public Member saveMember(String email, String selectedColor) { @@ -34,6 +36,7 @@ public void withdrawMember(long memberId) { memberAttractionRepository.deleteByMemberId(memberId); memberRegionRepository.deleteByMemberId(memberId); + refreshTokenRepository.deleteByMemberId(memberId); memberRepository.delete(member); } From fd4c17c8d6fd53fd6fb33c0015da8f206c001e67 Mon Sep 17 00:00:00 2001 From: min-0 Date: Thu, 17 Oct 2024 03:02:25 +0900 Subject: [PATCH 17/20] =?UTF-8?q?=F0=9F=94=A7=20Yml=20=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit workflows의 yml과 application.yml 운영 버전으로 변경 --- .github/workflows/CI.yml | 33 +++++++++++++++--------------- src/main/resources/application.yml | 9 ++++---- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 2590278..4fe9f8c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -1,29 +1,28 @@ -name: Mapddang-Dev +name: Java CI with Gradle on: push: - branches: [ "develop" ] + branches: [ "main" ] pull_request: - branches: [ "develop" ] + branches: [ "main" ] env: AWS_REGION: ap-northeast-2 - AWS_S3_BUCKET: mapddang-test-s3 - AWS_CODE_DEPLOY_APPLICATION: mapddang-test - AWS_CODE_DEPLOY_GROUP: mapddang-test-group - MYSQL_URL_DEV: ${{ secrets.MYSQL_URL_DEV }} + AWS_S3_BUCKET: ${{ secrets.AWS_BUCKET_NAME }} + AWS_CODE_DEPLOY_APPLICATION: mapddang-CD + AWS_CODE_DEPLOY_GROUP: mapddang-CD-group + MYSQL_URL: ${{ secrets.MYSQL_URL }} MYSQL_USERNAME: ${{ secrets.MYSQL_USERNAME }} MYSQL_PASSWORD: ${{ secrets.MYSQL_PASSWORD }} - APPLE_CLIENT_ID_DEV: ${{ secrets.APPLE_CLIENT_ID_DEV }} + APPLE_CLIENT_ID: ${{ secrets.APPLE_CLIENT_ID }} APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} APPLE_PRIVATE_KEY: ${{ secrets.APPLE_PRIVATE_KEY }} JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }} - ACCESS_TOKEN_EXPIRE_DEV: ${{ secrets.ACCESS_TOKEN_EXPIRE_DEV }} - REFRESH_TOKEN_EXPIRE_DEV: ${{ secrets.REFRESH_TOKEN_EXPIRE_DEV }} - EC2_ACCESS_KEY_DEV: ${{ secrets.EC2_ACCESS_KEY_DEV }} - EC2_SECRET_KEY_DEV: ${{ secrets.EC2_SECRET_KEY_DEV }} - AWS_BUCKET_NAME_DEV: ${{ secrets.AWS_BUCKET_NAME_DEV }} + ACCESS_TOKEN_EXPIRE: ${{ secrets.ACCESS_TOKEN_EXPIRE }} + REFRESH_TOKEN_EXPIRE: ${{ secrets.REFRESH_TOKEN_EXPIRE }} + AWS_S3_ACCESS_KEY: ${{ secrets.AWS_S3_ACCESS_KEY }} + AWS_S3_SECRET_KEY: ${{ secrets.AWS_S3_SECRET_KEY }} jobs: build-with-gradle: @@ -50,8 +49,8 @@ jobs: - name: Setup AWS credential uses: aws-actions/configure-aws-credentials@v1 with: - aws-access-key-id: ${{ secrets.EC2_ACCESS_KEY_DEV }} - aws-secret-access-key: ${{ secrets.EC2_SECRET_KEY_DEV }} + aws-access-key-id: ${{ secrets.AWS_S3_ACCESS_KEY }} + aws-secret-access-key: ${{ secrets.AWS_S3_SECRET_KEY }} aws-region: ap-northeast-2 #ZIP 파일을 S3 버킷에 업로드 - name: Upload to AWS S3 @@ -59,7 +58,7 @@ jobs: aws deploy push \ --application-name ${{ env.AWS_CODE_DEPLOY_APPLICATION }} \ --ignore-hidden-files \ - --s3-location s3://$AWS_S3_BUCKET/cicd/$GITHUB_SHA.zip \ + --s3-location s3://$AWS_S3_BUCKET/cicdtest/$GITHUB_SHA.zip \ --source . #업로드된 ZIP 파일을 CodeDeploy로 배포 - name: AWS Code Deploy @@ -68,4 +67,4 @@ jobs: --application-name ${{ env.AWS_CODE_DEPLOY_APPLICATION }} \ --deployment-config-name CodeDeployDefault.AllAtOnce \ --deployment-group-name ${{ env.AWS_CODE_DEPLOY_GROUP }} \ - --s3-location bucket=$AWS_S3_BUCKET,bundleType=zip,key=cicd/$GITHUB_SHA.zip \ No newline at end of file + --s3-location bucket=$AWS_S3_BUCKET,bundleType=zip,key=cicdtest/$GITHUB_SHA.zip \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d314cdf..23f33d9 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -26,7 +26,7 @@ social-login: provider: apple: grant-type: authorization_code - client-id: ${APPLE_CLIENT_ID_DEV} + client-id: ${APPLE_CLIENT_ID} key-id: ${APPLE_KEY_ID} # 애플에서 제공하는 키의 ID team-id: ${APPLE_TEAM_ID} # 애플 개발자 계정의 팀 ID audience: https://appleid.apple.com @@ -40,12 +40,11 @@ jwt: cloud: aws: credentials: - accessKey: ${EC2_ACCESS_KEY_DEV} - secretKey: ${EC2_SECRET_KEY_DEV} + accessKey: ${AWS_S3_ACCESS_KEY} + secretKey: ${AWS_S3_SECRET_KEY} region: static: ap-northeast-2 stack: auto: false s3: - bucketName: ${AWS_BUCKET_NAME_DEV} - + bucketName: ${AWS_BUCKET_NAME} \ No newline at end of file From eb441dc4cacc4f21c7bc12728836abd84ac9964f Mon Sep 17 00:00:00 2001 From: min-0 Date: Thu, 17 Oct 2024 21:33:52 +0900 Subject: [PATCH 18/20] =?UTF-8?q?:fire:=20=EB=B6=88=ED=95=84=EC=9A=94=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dndtravel/auth/service/AppleOAuthService.java | 12 ------------ .../dnd/dndtravel/member/service/MemberService.java | 3 ++- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java b/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java index 92469cc..9cd4c19 100644 --- a/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java +++ b/src/main/java/com/dnd/dndtravel/auth/service/AppleOAuthService.java @@ -44,22 +44,10 @@ @RequiredArgsConstructor @Component -@Slf4j public class AppleOAuthService { private final AppleClient appleClient; private final AppleProperties appleProperties; - public AppleIdTokenPayload get(String authorizationCode) { - String idToken = appleClient.getIdToken( - appleProperties.getClientId(), - generateClientSecret(), - appleProperties.getGrantType(), - authorizationCode - ).idToken(); - - return TokenDecoder.decodePayload(idToken, AppleIdTokenPayload.class); - } - private String generateClientSecret() { LocalDateTime expiration = LocalDateTime.now().plusMinutes(5); diff --git a/src/main/java/com/dnd/dndtravel/member/service/MemberService.java b/src/main/java/com/dnd/dndtravel/member/service/MemberService.java index 3db470c..5a500aa 100644 --- a/src/main/java/com/dnd/dndtravel/member/service/MemberService.java +++ b/src/main/java/com/dnd/dndtravel/member/service/MemberService.java @@ -1,6 +1,7 @@ package com.dnd.dndtravel.member.service; import com.dnd.dndtravel.auth.repository.RefreshTokenRepository; +import com.dnd.dndtravel.map.exception.MemberNotFoundException; import com.dnd.dndtravel.map.repository.MemberAttractionRepository; import com.dnd.dndtravel.map.repository.MemberRegionRepository; import com.dnd.dndtravel.auth.service.MemberNameGenerator; @@ -32,7 +33,7 @@ public Member saveMember(String email, String selectedColor) { @Transactional public void withdrawMember(long memberId) { Member member = memberRepository.findById(memberId) - .orElseThrow(() -> new RuntimeException("Member not found")); + .orElseThrow(() -> new MemberNotFoundException(memberId)); memberAttractionRepository.deleteByMemberId(memberId); memberRegionRepository.deleteByMemberId(memberId); From 1dabc5957716a8f40f93828e025fb19caf3f2d4f Mon Sep 17 00:00:00 2001 From: min-0 Date: Thu, 17 Oct 2024 21:34:47 +0900 Subject: [PATCH 19/20] =?UTF-8?q?:pencil2:=20=EC=98=A4=ED=83=80=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dndtravel/auth/controller/request/AppleWithdrawRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/dnd/dndtravel/auth/controller/request/AppleWithdrawRequest.java b/src/main/java/com/dnd/dndtravel/auth/controller/request/AppleWithdrawRequest.java index de03221..7bdeea3 100644 --- a/src/main/java/com/dnd/dndtravel/auth/controller/request/AppleWithdrawRequest.java +++ b/src/main/java/com/dnd/dndtravel/auth/controller/request/AppleWithdrawRequest.java @@ -11,7 +11,7 @@ */ public record AppleWithdrawRequest( @Schema(description = "Apple Refresh Token", requiredMode = REQUIRED) - @NotBlank(message = "appleRefreshTokend은 필수 입니다.") + @NotBlank(message = "appleRefreshToken은 필수 입니다.") @Size(max = 300, message = "token 형식이 아닙니다.") String appleRefreshToken ) { From 9101b01e7b99b2d4b8d228db3f0ad3f8678f5832 Mon Sep 17 00:00:00 2001 From: min-0 Date: Thu, 17 Oct 2024 21:39:34 +0900 Subject: [PATCH 20/20] =?UTF-8?q?:recycle:=20=ED=9A=8C=EC=9B=90=20?= =?UTF-8?q?=ED=83=88=ED=87=B4=20=EB=A6=AC=ED=84=B4=EA=B0=92=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dnd/dndtravel/auth/controller/AuthController.java | 4 +--- .../auth/controller/swagger/AuthControllerSwagger.java | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java b/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java index a9d5c70..3074034 100644 --- a/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java +++ b/src/main/java/com/dnd/dndtravel/auth/controller/AuthController.java @@ -53,13 +53,11 @@ public ReissueTokenResponse reissueToken(@RequestBody ReIssueTokenRequest reissu } @DeleteMapping("/withdraw") - public ResponseEntity withdraw(@RequestBody AppleWithdrawRequest withdrawRequest, AuthenticationMember authenticationMember) { + public void withdraw(@RequestBody AppleWithdrawRequest withdrawRequest, AuthenticationMember authenticationMember) { // 애플 서버에 탈퇴 요청 appleOAuthService.revoke(withdrawRequest.appleRefreshToken()); // 자체 회원 탈퇴 memberService.withdrawMember(authenticationMember.id()); - - return ResponseEntity.ok().build(); } } \ No newline at end of file diff --git a/src/main/java/com/dnd/dndtravel/auth/controller/swagger/AuthControllerSwagger.java b/src/main/java/com/dnd/dndtravel/auth/controller/swagger/AuthControllerSwagger.java index 0560c7d..7effdd3 100644 --- a/src/main/java/com/dnd/dndtravel/auth/controller/swagger/AuthControllerSwagger.java +++ b/src/main/java/com/dnd/dndtravel/auth/controller/swagger/AuthControllerSwagger.java @@ -84,7 +84,7 @@ ReissueTokenResponse reissueToken( ) ) }) - ResponseEntity withdraw( + void withdraw( @Parameter(description = "요청 정보(authorization code)", required = true) AppleWithdrawRequest appleWithdrawRequest, @Parameter(hidden = true)