From d2f866646fb2204d37d84897057be4bed151b349 Mon Sep 17 00:00:00 2001 From: Jayson Date: Sat, 4 Jan 2025 19:37:49 +0900 Subject: [PATCH 01/22] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 97acbeaf..7b7cff8e 100644 --- a/README.md +++ b/README.md @@ -34,9 +34,10 @@
+ ## Back-end (Spring 🌱) -| μ„œλ²„/정정ꡐ | μ„œλ²„/μ‹ μ •μœ€ | μ„œλ²„/ꢌμž₯순 +| μ„œλ²„/정정ꡐ | μ„œλ²„/μ‹ μ •μœ€ | μ„œλ²„/ꢌμž₯순 | :-----: | :-----: | :-----: | | [정정ꡐ/Junggyo1020](https://github.com/junggyo1020) | [μ‹ μ •μœ€/JungYoonShin](https://github.com/JungYoonShin) | [ꢌμž₯순/jsoonworld](https://github.com/jsoonworld) | From 182ba97f8fab2f6c3a0bc8a133f888760da5d0d7 Mon Sep 17 00:00:00 2001 From: Willie <150939763+junggyo1020@users.noreply.github.com> Date: Sat, 18 Jan 2025 22:59:44 +0900 Subject: [PATCH 02/22] Update DOCKER-CD.yml --- .github/workflows/DOCKER-CD.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/DOCKER-CD.yml b/.github/workflows/DOCKER-CD.yml index f9a786ee..a723f92f 100644 --- a/.github/workflows/DOCKER-CD.yml +++ b/.github/workflows/DOCKER-CD.yml @@ -65,8 +65,8 @@ jobs: - name: docker image λΉŒλ“œ 및 ν‘Έμ‹œ run: | - docker build --platform linux/amd64 -t terningpoint/terning-deploy . - docker push terningpoint/terning-deploy + docker build --platform linux/amd64 -t terningpoint/terning2025 . + docker push terningpoint/terning2025 working-directory: ${{ env.working-directory }} cd: From 69ef707b5b0d4fecb0c7b6806db35bc439e61a94 Mon Sep 17 00:00:00 2001 From: Willy Date: Sat, 18 Jan 2025 23:22:54 +0900 Subject: [PATCH 03/22] =?UTF-8?q?[=F0=9F=94=A5=20!hotfix]=20=EC=9A=B4?= =?UTF-8?q?=EC=98=81=EC=84=9C=EB=B2=84=20=EB=A7=88=EC=9D=B4=EA=B7=B8?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=85=98=20=EC=9E=91=EC=97=85=20=EC=A7=84?= =?UTF-8?q?=ED=96=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/terning/terningserver/config/SwaggerConfig.java | 1 + src/main/java/org/terning/terningserver/config/WebMvcConfig.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/org/terning/terningserver/config/SwaggerConfig.java b/src/main/java/org/terning/terningserver/config/SwaggerConfig.java index cc796a41..61642386 100644 --- a/src/main/java/org/terning/terningserver/config/SwaggerConfig.java +++ b/src/main/java/org/terning/terningserver/config/SwaggerConfig.java @@ -14,6 +14,7 @@ @OpenAPIDefinition( servers = { @Server(url = "https://www.terning-official.p-e.kr", description = "Default Server url"), + @Server(url = "http://http://43.201.230.77", description = "Default Server url (2025 ver.)"), @Server(url = "http://15.165.242.132", description = "Staging Server URL"), @Server(url = "http://localhost:8080", description = "Local Development Server URL") } diff --git a/src/main/java/org/terning/terningserver/config/WebMvcConfig.java b/src/main/java/org/terning/terningserver/config/WebMvcConfig.java index 68e9fff2..3b311c8b 100644 --- a/src/main/java/org/terning/terningserver/config/WebMvcConfig.java +++ b/src/main/java/org/terning/terningserver/config/WebMvcConfig.java @@ -15,6 +15,7 @@ public void addCorsMappings(CorsRegistry registry) { "http://localhost:8080", "http://localhost:3000", "https://www.terning-official.p-e.kr/", + "http://43.201.230.77", "http://15.165.242.132") // ν—ˆμš©ν•  좜처 : νŠΉμ • λ„λ©”μΈλ§Œ 받을 수 있음 .allowedMethods("GET", "POST", "PUT", "DELETE", "PATCH") // ν—ˆμš©ν•  HTTP method .allowCredentials(true); // μΏ ν‚€ 인증 μš”μ²­ ν—ˆμš© From 995958dc2c8a7052e6a9be78f4cab77781624980 Mon Sep 17 00:00:00 2001 From: Willy Date: Sat, 18 Jan 2025 23:29:50 +0900 Subject: [PATCH 04/22] =?UTF-8?q?[=F0=9F=94=A5=20!hotfix]=20=EC=9A=B4?= =?UTF-8?q?=EC=98=81=EC=84=9C=EB=B2=84=20=EB=A7=88=EC=9D=B4=EA=B7=B8?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=85=98=20=EC=9E=91=EC=97=85=20=EC=A7=84?= =?UTF-8?q?=ED=96=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/terning/terningserver/config/SwaggerConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/terning/terningserver/config/SwaggerConfig.java b/src/main/java/org/terning/terningserver/config/SwaggerConfig.java index 61642386..469a55b6 100644 --- a/src/main/java/org/terning/terningserver/config/SwaggerConfig.java +++ b/src/main/java/org/terning/terningserver/config/SwaggerConfig.java @@ -14,7 +14,7 @@ @OpenAPIDefinition( servers = { @Server(url = "https://www.terning-official.p-e.kr", description = "Default Server url"), - @Server(url = "http://http://43.201.230.77", description = "Default Server url (2025 ver.)"), + @Server(url = "http://43.201.230.77", description = "Default Server url (2025 ver.)"), @Server(url = "http://15.165.242.132", description = "Staging Server URL"), @Server(url = "http://localhost:8080", description = "Local Development Server URL") } From 35218876b4ff2cef78997591155b40b1d9ff7952 Mon Sep 17 00:00:00 2001 From: Willy Date: Sun, 19 Jan 2025 00:39:16 +0900 Subject: [PATCH 05/22] =?UTF-8?q?[=F0=9F=94=A5=20!hotfix]=20=EC=9A=B4?= =?UTF-8?q?=EC=98=81=EC=84=9C=EB=B2=84=20=EB=A7=88=EC=9D=B4=EA=B7=B8?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=85=98=20=EC=9E=91=EC=97=85=20=EC=A7=84?= =?UTF-8?q?=ED=96=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/terning/terningserver/config/SwaggerConfig.java | 2 +- .../java/org/terning/terningserver/config/WebMvcConfig.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/terning/terningserver/config/SwaggerConfig.java b/src/main/java/org/terning/terningserver/config/SwaggerConfig.java index 469a55b6..6a012ebd 100644 --- a/src/main/java/org/terning/terningserver/config/SwaggerConfig.java +++ b/src/main/java/org/terning/terningserver/config/SwaggerConfig.java @@ -14,7 +14,7 @@ @OpenAPIDefinition( servers = { @Server(url = "https://www.terning-official.p-e.kr", description = "Default Server url"), - @Server(url = "http://43.201.230.77", description = "Default Server url (2025 ver.)"), + @Server(url = "https://www.terning-official.n-e.kr", description = "Default Server url (2025 ver.)"), @Server(url = "http://15.165.242.132", description = "Staging Server URL"), @Server(url = "http://localhost:8080", description = "Local Development Server URL") } diff --git a/src/main/java/org/terning/terningserver/config/WebMvcConfig.java b/src/main/java/org/terning/terningserver/config/WebMvcConfig.java index 3b311c8b..458c7649 100644 --- a/src/main/java/org/terning/terningserver/config/WebMvcConfig.java +++ b/src/main/java/org/terning/terningserver/config/WebMvcConfig.java @@ -15,7 +15,7 @@ public void addCorsMappings(CorsRegistry registry) { "http://localhost:8080", "http://localhost:3000", "https://www.terning-official.p-e.kr/", - "http://43.201.230.77", + "https://www.terning-official.n-e.kr/", "http://15.165.242.132") // ν—ˆμš©ν•  좜처 : νŠΉμ • λ„λ©”μΈλ§Œ 받을 수 있음 .allowedMethods("GET", "POST", "PUT", "DELETE", "PATCH") // ν—ˆμš©ν•  HTTP method .allowCredentials(true); // μΏ ν‚€ 인증 μš”μ²­ ν—ˆμš© From 90e672afae86e9c9d09c0e9ff778b49a7a4d796f Mon Sep 17 00:00:00 2001 From: Willie <150939763+junggyo1020@users.noreply.github.com> Date: Sun, 19 Jan 2025 02:19:39 +0900 Subject: [PATCH 06/22] Update DOCKER-CD-STAGING.yml --- .github/workflows/DOCKER-CD-STAGING.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/DOCKER-CD-STAGING.yml b/.github/workflows/DOCKER-CD-STAGING.yml index c6a03907..69ae64ad 100644 --- a/.github/workflows/DOCKER-CD-STAGING.yml +++ b/.github/workflows/DOCKER-CD-STAGING.yml @@ -70,8 +70,8 @@ jobs: - name: docker image λΉŒλ“œ 및 ν‘Έμ‹œ run: | - docker build -f Dockerfile-staging --platform linux/amd64 -t terningpoint/terning-staging . - docker push terningpoint/terning-staging + docker build -f Dockerfile-staging --platform linux/amd64 -t terningpoint/terning2025-staging . + docker push terningpoint/terning2025-staging working-directory: ${{ env.working-directory }} cd: From 2fbcbd28974c92018b02da810bcc9a53e3ef5c94 Mon Sep 17 00:00:00 2001 From: Willy Date: Sun, 19 Jan 2025 02:41:11 +0900 Subject: [PATCH 07/22] =?UTF-8?q?[=F0=9F=94=A5=20!hotfix]=20=EC=8A=A4?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EC=A7=95=20=EC=84=9C=EB=B2=84=20=EB=A7=88?= =?UTF-8?q?=EC=9D=B4=EA=B7=B8=EB=A0=88=EC=9D=B4=EC=85=98=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=20=EC=A7=84=ED=96=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/terning/terningserver/config/SwaggerConfig.java | 1 + .../java/org/terning/terningserver/config/WebMvcConfig.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/terning/terningserver/config/SwaggerConfig.java b/src/main/java/org/terning/terningserver/config/SwaggerConfig.java index 6a012ebd..534c49da 100644 --- a/src/main/java/org/terning/terningserver/config/SwaggerConfig.java +++ b/src/main/java/org/terning/terningserver/config/SwaggerConfig.java @@ -16,6 +16,7 @@ @Server(url = "https://www.terning-official.p-e.kr", description = "Default Server url"), @Server(url = "https://www.terning-official.n-e.kr", description = "Default Server url (2025 ver.)"), @Server(url = "http://15.165.242.132", description = "Staging Server URL"), + @Server(url = "http://54.180.215.35", description = "Staging Server URL (2025 ver.)"), @Server(url = "http://localhost:8080", description = "Local Development Server URL") } ) diff --git a/src/main/java/org/terning/terningserver/config/WebMvcConfig.java b/src/main/java/org/terning/terningserver/config/WebMvcConfig.java index 458c7649..1edd2142 100644 --- a/src/main/java/org/terning/terningserver/config/WebMvcConfig.java +++ b/src/main/java/org/terning/terningserver/config/WebMvcConfig.java @@ -16,7 +16,8 @@ public void addCorsMappings(CorsRegistry registry) { "http://localhost:3000", "https://www.terning-official.p-e.kr/", "https://www.terning-official.n-e.kr/", - "http://15.165.242.132") // ν—ˆμš©ν•  좜처 : νŠΉμ • λ„λ©”μΈλ§Œ 받을 수 있음 + "http://15.165.242.132", + "http://54.180.215.35") // ν—ˆμš©ν•  좜처 : νŠΉμ • λ„λ©”μΈλ§Œ 받을 수 있음 .allowedMethods("GET", "POST", "PUT", "DELETE", "PATCH") // ν—ˆμš©ν•  HTTP method .allowCredentials(true); // μΏ ν‚€ 인증 μš”μ²­ ν—ˆμš© } From feca3f0b1db60b0ed9cfb74408d6f0136889d249 Mon Sep 17 00:00:00 2001 From: Willy Date: Mon, 7 Apr 2025 00:23:00 +0900 Subject: [PATCH 08/22] =?UTF-8?q?[=20!hotfix]=20NOT=20NULL=20=EC=86=8D?= =?UTF-8?q?=EC=84=B1=EC=97=90=20=EC=9D=98=ED=95=9C=20=EC=98=A4=EB=A5=98?= =?UTF-8?q?=EC=9D=B8=EC=A7=80=20=ED=99=95=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/terning/terningserver/domain/Scrap.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/terning/terningserver/domain/Scrap.java b/src/main/java/org/terning/terningserver/domain/Scrap.java index ee11ec14..9e281d58 100644 --- a/src/main/java/org/terning/terningserver/domain/Scrap.java +++ b/src/main/java/org/terning/terningserver/domain/Scrap.java @@ -34,7 +34,7 @@ public class Scrap extends BaseTimeEntity { private Color color; @Embedded - @AttributeOverride(name = "value", column = @Column(name = "synced", nullable = false)) + @AttributeOverride(name = "value", column = @Column(name = "synced")) private SyncStatus syncStatus; private Scrap(User user, InternshipAnnouncement internshipAnnouncement, Color color) { From c3438482f152fd125a0abbe1b8849e7411d1cc9b Mon Sep 17 00:00:00 2001 From: Willy Date: Sun, 13 Apr 2025 16:31:21 +0900 Subject: [PATCH 09/22] =?UTF-8?q?[chore]=20test=EB=A5=BC=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EC=A3=BC=EC=84=9D=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/application/signin/AuthSignInServiceImpl.java | 8 +++++--- .../auth/dto/response/SignInResponse.java | 10 +++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java b/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java index 6e9e56ad..fd43257e 100644 --- a/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java +++ b/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java @@ -30,15 +30,17 @@ public SignInResponse signIn(String authAccessToken, SignInRequest request) { User user = findUserByAuthIdAndType(authId, request.authType()); if (user == null) { - return SignInResponse.of(null, authId, request.authType(), null, false); +// return SignInResponse.of(null, authId, request.authType(), null, false); + return SignInResponse.of(null, authId, request.authType(), null); } Token token = jwtTokenManager.generateToken(user); user.updateRefreshToken(token.getRefreshToken()); - boolean fcmReissueRequired = fcmTokenValidationClient.requestFcmTokenValidation(user.getId()); +// boolean fcmReissueRequired = fcmTokenValidationClient.requestFcmTokenValidation(user.getId()); - return SignInResponse.of(token, authId, request.authType(), user.getId(), fcmReissueRequired); +// return SignInResponse.of(token, authId, request.authType(), user.getId(), fcmReissueRequired); + return SignInResponse.of(token, authId, request.authType(), user.getId()); } diff --git a/src/main/java/org/terning/terningserver/auth/dto/response/SignInResponse.java b/src/main/java/org/terning/terningserver/auth/dto/response/SignInResponse.java index bd3e645d..a07756e7 100644 --- a/src/main/java/org/terning/terningserver/auth/dto/response/SignInResponse.java +++ b/src/main/java/org/terning/terningserver/auth/dto/response/SignInResponse.java @@ -10,17 +10,17 @@ public record SignInResponse( String refreshToken, Long userId, String authId, - AuthType authType, - boolean fcmTokenReissueRequired + AuthType authType +// boolean fcmTokenReissueRequired ) { - public static SignInResponse of(Token token, String authId, AuthType authType, Long userId, boolean fcmTokenReissueRequired) { + public static SignInResponse of(Token token, String authId, AuthType authType, Long userId) { return new SignInResponse( Optional.ofNullable(token).map(Token::getAccessToken).orElse(null), Optional.ofNullable(token).map(Token::getRefreshToken).orElse(null), userId, authId, - authType, - fcmTokenReissueRequired + authType +// fcmTokenReissueRequired ); } } From 9acfa187248925d3bd5641625056c267f415a304 Mon Sep 17 00:00:00 2001 From: Willy Date: Sun, 13 Apr 2025 17:09:59 +0900 Subject: [PATCH 10/22] =?UTF-8?q?[chore]=20HS256=20=EC=95=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=EC=A6=98=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/terning/terningserver/jwt/provider/JwtSigner.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java b/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java index 87490014..baefb8f1 100644 --- a/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java +++ b/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java @@ -2,6 +2,7 @@ import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.terning.terningserver.config.ValueConfig; @@ -18,7 +19,7 @@ public String sign(Claims claims, long expiration) { .setClaims(claims) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() + expiration)) - .signWith(JwtKeyProvider.getSigningKey(valueConfig)) + .signWith(JwtKeyProvider.getSigningKey(valueConfig), SignatureAlgorithm.HS256) .compact(); } } From d7f8bf18c12d813132b4fabfcb0f87520335eba2 Mon Sep 17 00:00:00 2001 From: Willy Date: Sun, 13 Apr 2025 17:21:32 +0900 Subject: [PATCH 11/22] =?UTF-8?q?[chore]=20HS256=20=EC=95=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=EC=A6=98=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/terning/terningserver/jwt/provider/JwtKeyProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java index 0603daaf..61977b3b 100644 --- a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java +++ b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java @@ -1,6 +1,7 @@ package org.terning.terningserver.jwt.provider; import io.jsonwebtoken.security.Keys; +import java.nio.charset.StandardCharsets; import org.springframework.stereotype.Component; import org.terning.terningserver.config.ValueConfig; @@ -9,6 +10,6 @@ @Component public class JwtKeyProvider { public static SecretKey getSigningKey(ValueConfig valueConfig) { - return Keys.hmacShaKeyFor(valueConfig.getSecretKey().getBytes()); + return Keys.hmacShaKeyFor(valueConfig.getSecretKey().getBytes(StandardCharsets.UTF_8)); } } From 83ac1109113e98a721b0180169f5544912a1c3bd Mon Sep 17 00:00:00 2001 From: Willy Date: Sun, 13 Apr 2025 17:27:26 +0900 Subject: [PATCH 12/22] =?UTF-8?q?[chore]=20RS256=20=EC=95=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=EC=A6=98=20=EC=9E=AC=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/terning/terningserver/jwt/provider/JwtKeyProvider.java | 2 +- .../java/org/terning/terningserver/jwt/provider/JwtSigner.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java index 61977b3b..1e291a53 100644 --- a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java +++ b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java @@ -10,6 +10,6 @@ @Component public class JwtKeyProvider { public static SecretKey getSigningKey(ValueConfig valueConfig) { - return Keys.hmacShaKeyFor(valueConfig.getSecretKey().getBytes(StandardCharsets.UTF_8)); + return Keys.hmacShaKeyFor(valueConfig.getSecretKey().getBytes()); } } diff --git a/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java b/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java index baefb8f1..2e3dde98 100644 --- a/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java +++ b/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java @@ -19,7 +19,7 @@ public String sign(Claims claims, long expiration) { .setClaims(claims) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() + expiration)) - .signWith(JwtKeyProvider.getSigningKey(valueConfig), SignatureAlgorithm.HS256) + .signWith(JwtKeyProvider.getSigningKey(valueConfig)) .compact(); } } From 79b355735ebe21badbc28a7e00fc642b829324a3 Mon Sep 17 00:00:00 2001 From: Willy Date: Mon, 14 Apr 2025 01:17:32 +0900 Subject: [PATCH 13/22] =?UTF-8?q?[chore]=20RS256=20=EC=95=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=EC=A6=98=20=EC=9E=AC=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/terning/terningserver/config/ValueConfig.java | 8 ++++---- .../terningserver/jwt/provider/JwtKeyProvider.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/terning/terningserver/config/ValueConfig.java b/src/main/java/org/terning/terningserver/config/ValueConfig.java index 9f4a1ef8..ea06eda0 100644 --- a/src/main/java/org/terning/terningserver/config/ValueConfig.java +++ b/src/main/java/org/terning/terningserver/config/ValueConfig.java @@ -27,8 +27,8 @@ public class ValueConfig { @Value("${jwt.refresh-token-expired}") private Long refreshTokenExpired; - @PostConstruct - protected void init() { - secretKey = Base64.getEncoder().encodeToString(secretKey.getBytes(StandardCharsets.UTF_8)); - } +// @PostConstruct +// protected void init() { +// secretKey = Base64.getEncoder().encodeToString(secretKey.getBytes(StandardCharsets.UTF_8)); +// } } \ No newline at end of file diff --git a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java index 1e291a53..61977b3b 100644 --- a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java +++ b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java @@ -10,6 +10,6 @@ @Component public class JwtKeyProvider { public static SecretKey getSigningKey(ValueConfig valueConfig) { - return Keys.hmacShaKeyFor(valueConfig.getSecretKey().getBytes()); + return Keys.hmacShaKeyFor(valueConfig.getSecretKey().getBytes(StandardCharsets.UTF_8)); } } From d688ebba94c4ff047f223ad2d279d9572a02ba35 Mon Sep 17 00:00:00 2001 From: Willy Date: Mon, 14 Apr 2025 01:38:17 +0900 Subject: [PATCH 14/22] =?UTF-8?q?[chore]=20RS256=20=EC=95=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=EC=A6=98=20=EC=9E=AC=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terningserver/jwt/provider/JwtKeyProvider.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java index 61977b3b..64acf8b7 100644 --- a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java +++ b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java @@ -1,7 +1,7 @@ package org.terning.terningserver.jwt.provider; import io.jsonwebtoken.security.Keys; -import java.nio.charset.StandardCharsets; +import java.util.Base64; import org.springframework.stereotype.Component; import org.terning.terningserver.config.ValueConfig; @@ -10,6 +10,10 @@ @Component public class JwtKeyProvider { public static SecretKey getSigningKey(ValueConfig valueConfig) { - return Keys.hmacShaKeyFor(valueConfig.getSecretKey().getBytes(StandardCharsets.UTF_8)); +// return Keys.hmacShaKeyFor(valueConfig.getSecretKey().getBytes(StandardCharsets.UTF_8)); + byte[] keyBytes = Base64.getDecoder().decode(valueConfig.getSecretKey()); + SecretKey key = Keys.hmacShaKeyFor(keyBytes); + System.out.println("Using secret key with bit length: " + (key.getEncoded().length * 8) + " bits"); + return key; } } From 211ad16436dc264bb129a97f397f05064f079850 Mon Sep 17 00:00:00 2001 From: Willy Date: Mon, 14 Apr 2025 07:29:44 +0900 Subject: [PATCH 15/22] =?UTF-8?q?[chore]=20HS256=20=EC=95=8C=EA=B3=A0?= =?UTF-8?q?=EB=A6=AC=EC=A6=98=20=EC=9E=AC=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/terning/terningserver/jwt/provider/JwtSigner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java b/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java index 2e3dde98..baefb8f1 100644 --- a/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java +++ b/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java @@ -19,7 +19,7 @@ public String sign(Claims claims, long expiration) { .setClaims(claims) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() + expiration)) - .signWith(JwtKeyProvider.getSigningKey(valueConfig)) + .signWith(JwtKeyProvider.getSigningKey(valueConfig), SignatureAlgorithm.HS256) .compact(); } } From 3688894a4f9e930369c2dc4703621312e65fdfea Mon Sep 17 00:00:00 2001 From: Willy Date: Mon, 14 Apr 2025 12:50:48 +0900 Subject: [PATCH 16/22] =?UTF-8?q?[chore]=20JwtKeyProvider=EA=B0=80=20?= =?UTF-8?q?=EC=9E=90=EC=B2=B4=EC=A0=81=EC=9C=BC=EB=A1=9C=20RSA=20=ED=82=A4?= =?UTF-8?q?=20=ED=8E=98=EC=96=B4=EB=A5=BC=20=EC=83=9D=EC=84=B1=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=BD=94=EB=93=9C=EB=A5=BC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jwt/auth/JwtClaimsParser.java | 5 +++-- .../jwt/provider/JwtKeyProvider.java | 21 +++++++++++++------ .../terningserver/jwt/provider/JwtSigner.java | 5 +++-- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/terning/terningserver/jwt/auth/JwtClaimsParser.java b/src/main/java/org/terning/terningserver/jwt/auth/JwtClaimsParser.java index c87c8b61..88b2bcdf 100644 --- a/src/main/java/org/terning/terningserver/jwt/auth/JwtClaimsParser.java +++ b/src/main/java/org/terning/terningserver/jwt/auth/JwtClaimsParser.java @@ -12,12 +12,13 @@ @Service @RequiredArgsConstructor public class JwtClaimsParser { - private final ValueConfig valueConfig; +// private final ValueConfig valueConfig; + private final JwtKeyProvider jwtKeyProvider; public Claims parse(String token) { try { return Jwts.parserBuilder() - .setSigningKey(JwtKeyProvider.getSigningKey(valueConfig)) + .setSigningKey(jwtKeyProvider.getPublicKey()) .build() .parseClaimsJws(token) .getBody(); diff --git a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java index 64acf8b7..6167f043 100644 --- a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java +++ b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java @@ -1,7 +1,10 @@ package org.terning.terningserver.jwt.provider; +import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.security.Keys; -import java.util.Base64; +import java.security.KeyPair; +import java.security.PrivateKey; +import java.security.PublicKey; import org.springframework.stereotype.Component; import org.terning.terningserver.config.ValueConfig; @@ -9,11 +12,17 @@ @Component public class JwtKeyProvider { + private final KeyPair keyPair = Keys.keyPairFor(SignatureAlgorithm.RS256); + + public PrivateKey getPrivateKey() { + return keyPair.getPrivate(); + } + + public PublicKey getPublicKey() { + return keyPair.getPublic(); + } + public static SecretKey getSigningKey(ValueConfig valueConfig) { -// return Keys.hmacShaKeyFor(valueConfig.getSecretKey().getBytes(StandardCharsets.UTF_8)); - byte[] keyBytes = Base64.getDecoder().decode(valueConfig.getSecretKey()); - SecretKey key = Keys.hmacShaKeyFor(keyBytes); - System.out.println("Using secret key with bit length: " + (key.getEncoded().length * 8) + " bits"); - return key; + return Keys.hmacShaKeyFor(valueConfig.getSecretKey().getBytes()); } } diff --git a/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java b/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java index baefb8f1..e1aff861 100644 --- a/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java +++ b/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java @@ -12,14 +12,15 @@ @Component @RequiredArgsConstructor public class JwtSigner { - private final ValueConfig valueConfig; +// private final ValueConfig valueConfig; + private final JwtKeyProvider jwtKeyProvider; public String sign(Claims claims, long expiration) { return Jwts.builder() .setClaims(claims) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() + expiration)) - .signWith(JwtKeyProvider.getSigningKey(valueConfig), SignatureAlgorithm.HS256) + .signWith(jwtKeyProvider.getPrivateKey(), SignatureAlgorithm.RS256) .compact(); } } From 71c8673f03992d0840426c68b5dfff6b6369649e Mon Sep 17 00:00:00 2001 From: Willy Date: Mon, 14 Apr 2025 13:56:48 +0900 Subject: [PATCH 17/22] =?UTF-8?q?[chore]=20Apple=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=EC=9D=B4=20=EC=95=88=EB=90=98=EB=8D=98=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/application/signin/AuthSignInServiceImpl.java | 2 +- .../social/apple/AppleAuthTokenValidator.java | 6 ++++-- .../org/terning/terningserver/config/ValueConfig.java | 8 ++++---- .../terning/terningserver/jwt/auth/JwtClaimsParser.java | 5 ++--- .../terningserver/jwt/provider/JwtKeyProvider.java | 9 --------- .../terning/terningserver/jwt/provider/JwtSigner.java | 6 ++---- 6 files changed, 13 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java b/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java index fd43257e..e7b0481e 100644 --- a/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java +++ b/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java @@ -21,7 +21,7 @@ public class AuthSignInServiceImpl implements AuthSignInService { private final SocialAuthServiceManager socialAuthServiceManager; private final JwtTokenManager jwtTokenManager; private final UserRepository userRepository; - private final FcmTokenValidationClient fcmTokenValidationClient; +// private final FcmTokenValidationClient fcmTokenValidationClient; @Transactional @Override diff --git a/src/main/java/org/terning/terningserver/auth/application/social/apple/AppleAuthTokenValidator.java b/src/main/java/org/terning/terningserver/auth/application/social/apple/AppleAuthTokenValidator.java index 8cdab80c..ffae0342 100644 --- a/src/main/java/org/terning/terningserver/auth/application/social/apple/AppleAuthTokenValidator.java +++ b/src/main/java/org/terning/terningserver/auth/application/social/apple/AppleAuthTokenValidator.java @@ -133,8 +133,10 @@ private PublicKey getPublicKey(JsonObject object) { String modulus = object.get(MODULUS).getAsString(); String exponent = object.get(EXPONENT).getAsString(); - byte[] modulusBytes = Base64.getUrlDecoder().decode(modulus.substring(QUOTES, modulus.length() - QUOTES)); - byte[] exponentBytes = Base64.getUrlDecoder().decode(exponent.substring(QUOTES, exponent.length() - QUOTES)); +// byte[] modulusBytes = Base64.getUrlDecoder().decode(modulus.substring(QUOTES, modulus.length() - QUOTES)); + byte[] modulusBytes = Base64.getUrlDecoder().decode(modulus); +// byte[] exponentBytes = Base64.getUrlDecoder().decode(exponent.substring(QUOTES, exponent.length() - QUOTES)); + byte[] exponentBytes = Base64.getUrlDecoder().decode(exponent); BigInteger modulusValue = new BigInteger(POSITIVE_NUMBER, modulusBytes); BigInteger exponentValue = new BigInteger(POSITIVE_NUMBER, exponentBytes); diff --git a/src/main/java/org/terning/terningserver/config/ValueConfig.java b/src/main/java/org/terning/terningserver/config/ValueConfig.java index ea06eda0..9f4a1ef8 100644 --- a/src/main/java/org/terning/terningserver/config/ValueConfig.java +++ b/src/main/java/org/terning/terningserver/config/ValueConfig.java @@ -27,8 +27,8 @@ public class ValueConfig { @Value("${jwt.refresh-token-expired}") private Long refreshTokenExpired; -// @PostConstruct -// protected void init() { -// secretKey = Base64.getEncoder().encodeToString(secretKey.getBytes(StandardCharsets.UTF_8)); -// } + @PostConstruct + protected void init() { + secretKey = Base64.getEncoder().encodeToString(secretKey.getBytes(StandardCharsets.UTF_8)); + } } \ No newline at end of file diff --git a/src/main/java/org/terning/terningserver/jwt/auth/JwtClaimsParser.java b/src/main/java/org/terning/terningserver/jwt/auth/JwtClaimsParser.java index 88b2bcdf..c87c8b61 100644 --- a/src/main/java/org/terning/terningserver/jwt/auth/JwtClaimsParser.java +++ b/src/main/java/org/terning/terningserver/jwt/auth/JwtClaimsParser.java @@ -12,13 +12,12 @@ @Service @RequiredArgsConstructor public class JwtClaimsParser { -// private final ValueConfig valueConfig; - private final JwtKeyProvider jwtKeyProvider; + private final ValueConfig valueConfig; public Claims parse(String token) { try { return Jwts.parserBuilder() - .setSigningKey(jwtKeyProvider.getPublicKey()) + .setSigningKey(JwtKeyProvider.getSigningKey(valueConfig)) .build() .parseClaimsJws(token) .getBody(); diff --git a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java index 6167f043..53ede881 100644 --- a/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java +++ b/src/main/java/org/terning/terningserver/jwt/provider/JwtKeyProvider.java @@ -12,15 +12,6 @@ @Component public class JwtKeyProvider { - private final KeyPair keyPair = Keys.keyPairFor(SignatureAlgorithm.RS256); - - public PrivateKey getPrivateKey() { - return keyPair.getPrivate(); - } - - public PublicKey getPublicKey() { - return keyPair.getPublic(); - } public static SecretKey getSigningKey(ValueConfig valueConfig) { return Keys.hmacShaKeyFor(valueConfig.getSecretKey().getBytes()); diff --git a/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java b/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java index e1aff861..87490014 100644 --- a/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java +++ b/src/main/java/org/terning/terningserver/jwt/provider/JwtSigner.java @@ -2,7 +2,6 @@ import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; -import io.jsonwebtoken.SignatureAlgorithm; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.terning.terningserver.config.ValueConfig; @@ -12,15 +11,14 @@ @Component @RequiredArgsConstructor public class JwtSigner { -// private final ValueConfig valueConfig; - private final JwtKeyProvider jwtKeyProvider; + private final ValueConfig valueConfig; public String sign(Claims claims, long expiration) { return Jwts.builder() .setClaims(claims) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() + expiration)) - .signWith(jwtKeyProvider.getPrivateKey(), SignatureAlgorithm.RS256) + .signWith(JwtKeyProvider.getSigningKey(valueConfig)) .compact(); } } From 8a0da9b17a2820b75b932bdd3a14b2082dcfee1f Mon Sep 17 00:00:00 2001 From: Willy Date: Mon, 14 Apr 2025 21:27:54 +0900 Subject: [PATCH 18/22] =?UTF-8?q?[chore]=20=EC=A7=A7=EC=9D=80=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=EA=B0=84=20=EC=9D=91=EB=8B=B5=EC=8B=9C=EA=B0=84=20?= =?UTF-8?q?=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../terning/terningserver/external/config/WebClientConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/terning/terningserver/external/config/WebClientConfig.java b/src/main/java/org/terning/terningserver/external/config/WebClientConfig.java index 48fad821..b938c9fc 100644 --- a/src/main/java/org/terning/terningserver/external/config/WebClientConfig.java +++ b/src/main/java/org/terning/terningserver/external/config/WebClientConfig.java @@ -18,7 +18,7 @@ @Configuration public class WebClientConfig { - private static final int CONNECT_TIMEOUT_MILLIS = 2000; + private static final int CONNECT_TIMEOUT_MILLIS = 5000; private static final int READ_TIMEOUT_SECONDS = 2; private static final int WRITE_TIMEOUT_SECONDS = 2; From 6d8059205b114df653b678a1122acf655dac6269 Mon Sep 17 00:00:00 2001 From: Willy Date: Tue, 15 Apr 2025 01:06:47 +0900 Subject: [PATCH 19/22] =?UTF-8?q?[=F0=9F=94=A8=20fix]=20=EB=8F=99=EA=B8=B0?= =?UTF-8?q?=EC=A0=81=20=EB=B0=A9=EC=8B=9D=EC=9C=BC=EB=A1=9C=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=EC=84=9C=EB=B2=84=EC=97=90=20username=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=9D=84=20=EC=A0=81=EC=9A=A9=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/terning/terningserver/service/UserServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/terning/terningserver/service/UserServiceImpl.java b/src/main/java/org/terning/terningserver/service/UserServiceImpl.java index 431f7184..b2d0d96b 100644 --- a/src/main/java/org/terning/terningserver/service/UserServiceImpl.java +++ b/src/main/java/org/terning/terningserver/service/UserServiceImpl.java @@ -9,6 +9,7 @@ import org.terning.terningserver.dto.user.request.ProfileUpdateRequestDto; import org.terning.terningserver.exception.CustomException; import org.terning.terningserver.exception.enums.ErrorMessage; +import org.terning.terningserver.external.notification.NotificationUserClient; import org.terning.terningserver.external.user.application.UserSyncEventService; import org.terning.terningserver.repository.user.UserRepository; import org.terning.terningserver.dto.user.response.ProfileResponseDto; @@ -22,6 +23,7 @@ public class UserServiceImpl implements UserService { private final UserRepository userRepository; private final UserSyncEventService userSyncEventService; + private final NotificationUserClient notificationUserClient; @Override @Transactional @@ -54,7 +56,8 @@ public void updateProfile(Long userId, ProfileUpdateRequestDto request){ ProfileImage profileImage = ProfileImage.fromValue(request.profileImage()); if (!user.getName().equals(request.name())) { - userSyncEventService.recordNameChange(userId, request.name()); +// userSyncEventService.recordNameChange(userId, request.name()); + notificationUserClient.updateUserName(userId, request.name()); } //ν”„λ‘œν•„ μ—…λ°μ΄νŠΈ From 46baf6706c6c3e6332d83d42f2f864c8afd927f8 Mon Sep 17 00:00:00 2001 From: Willy Date: Tue, 15 Apr 2025 01:08:07 +0900 Subject: [PATCH 20/22] =?UTF-8?q?[=F0=9F=94=A8=20fix]=20=EB=8F=99=EA=B8=B0?= =?UTF-8?q?=EC=A0=81=20=EB=B0=A9=EC=8B=9D=EC=9C=BC=EB=A1=9C=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=EC=84=9C=EB=B2=84=EC=97=90=20=ED=9A=8C=EC=9B=90=20?= =?UTF-8?q?=ED=83=88=ED=87=B4=EB=A5=BC=20=EC=A0=81=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/terning/terningserver/service/UserServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/terning/terningserver/service/UserServiceImpl.java b/src/main/java/org/terning/terningserver/service/UserServiceImpl.java index b2d0d96b..8d54666c 100644 --- a/src/main/java/org/terning/terningserver/service/UserServiceImpl.java +++ b/src/main/java/org/terning/terningserver/service/UserServiceImpl.java @@ -30,7 +30,8 @@ public class UserServiceImpl implements UserService { public void deleteUser(User user) { try { userRepository.delete(user); - userSyncEventService.recordWithdraw(user.getId()); +// userSyncEventService.recordWithdraw(user.getId()); + notificationUserClient.deleteUser(user.getId()); } catch (Exception e) { throw new CustomException(FAILED_WITHDRAW); } From af2c537a2432439b02d18ac8b0a3d4b9687c6ae3 Mon Sep 17 00:00:00 2001 From: Willy Date: Tue, 15 Apr 2025 05:57:24 +0900 Subject: [PATCH 21/22] =?UTF-8?q?[=E2=9C=A8=20feat]=20=EC=86=8C=EC=85=9C?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=8B=9C,=20=ED=81=B4=EB=9D=BC?= =?UTF-8?q?=EC=9D=B4=EC=96=B8=ED=8A=B8=20=EC=B8=A1=EC=97=90=EC=84=9C=20fcm?= =?UTF-8?q?Token=EC=9D=84=20RequestBody=EB=A1=9C=20=EC=A0=84=EB=8B=AC?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/dto/request/SignInRequest.java | 6 +++--- .../notification/NotificationUserClient.java | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/terning/terningserver/auth/dto/request/SignInRequest.java b/src/main/java/org/terning/terningserver/auth/dto/request/SignInRequest.java index 1c2dce56..6e13dc54 100644 --- a/src/main/java/org/terning/terningserver/auth/dto/request/SignInRequest.java +++ b/src/main/java/org/terning/terningserver/auth/dto/request/SignInRequest.java @@ -3,8 +3,8 @@ import lombok.NonNull; import org.terning.terningserver.domain.enums.AuthType; -public record SignInRequest(@NonNull AuthType authType) { - public static SignInRequest of(AuthType authType){ - return new SignInRequest(authType); +public record SignInRequest(@NonNull AuthType authType, String fcmToken) { + public static SignInRequest of(AuthType authType, String fcmToken){ + return new SignInRequest(authType, fcmToken); } } diff --git a/src/main/java/org/terning/terningserver/external/notification/NotificationUserClient.java b/src/main/java/org/terning/terningserver/external/notification/NotificationUserClient.java index c4600f60..cbc1ee8e 100644 --- a/src/main/java/org/terning/terningserver/external/notification/NotificationUserClient.java +++ b/src/main/java/org/terning/terningserver/external/notification/NotificationUserClient.java @@ -50,6 +50,23 @@ public void createUserOnNotificationServer( log.info("User (id={}) created on notification server : ", userId); } + /** + * μ•Œλ¦Όμ„œλ²„μ— μƒˆλ‘œμš΄ fcm 토큰을 μ „λ‹¬ν•©λ‹ˆλ‹€. + * + * @param userId μ‚¬μš©μž ID + * @param newToken μƒˆλ‘œμš΄ fcm 토큰 + */ + public void updateFcmToken(Long userId, String newToken) { + notificationWebClient.put() + .uri("/api/v1/users/{userId}/fcm-tokens", userId) + .body(Mono.just(newToken), String.class) + .retrieve() + .bodyToMono(Void.class) + .block(); + + log.info("FCM tokens updated for user (id={}): {}", userId, newToken); + } + /** * μ•Œλ¦Όμ„œλ²„μ— μ‹ κ·œ μ‚¬μš©μž 정보λ₯Ό μ „λ‹¬ν•˜μ—¬ μ‚¬μš©μž λ ˆμ½”λ“œλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. * μš΄μ˜μ„œλ²„μ—μ„œλŠ” pushStatus 값을 DB에 μ €μž₯ν•˜μ§€ μ•Šκ³ , From 79edcbbe0c13ffc434bef594f018f22ed98cd19d Mon Sep 17 00:00:00 2001 From: Willy Date: Tue, 15 Apr 2025 05:58:35 +0900 Subject: [PATCH 22/22] =?UTF-8?q?[=E2=9C=A8=20feat]=20fcmToken=EC=9D=B4=20?= =?UTF-8?q?=EC=97=86=EB=8A=94=20=EC=9C=A0=EC=A0=80=EA=B0=80=20=EC=86=8C?= =?UTF-8?q?=EC=85=9C=EB=A1=9C=EA=B7=B8=EC=9D=B8=EC=9D=84=20=ED=95=98?= =?UTF-8?q?=EB=A9=B4=20=EC=83=88=EB=A1=AD=EA=B2=8C=20=EB=B0=9C=EA=B8=89?= =?UTF-8?q?=EB=B0=9B=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 --- .../auth/application/signin/AuthSignInServiceImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java b/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java index e7b0481e..8544ef00 100644 --- a/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java +++ b/src/main/java/org/terning/terningserver/auth/application/signin/AuthSignInServiceImpl.java @@ -5,7 +5,7 @@ import org.springframework.transaction.annotation.Transactional; import org.terning.terningserver.auth.application.social.SocialAuthProvider; import org.terning.terningserver.auth.application.social.SocialAuthServiceManager; -import org.terning.terningserver.external.notification.FcmTokenValidationClient; +import org.terning.terningserver.external.notification.NotificationUserClient; import org.terning.terningserver.jwt.application.JwtTokenManager; import org.terning.terningserver.domain.Token; import org.terning.terningserver.domain.User; @@ -21,6 +21,7 @@ public class AuthSignInServiceImpl implements AuthSignInService { private final SocialAuthServiceManager socialAuthServiceManager; private final JwtTokenManager jwtTokenManager; private final UserRepository userRepository; + private final NotificationUserClient notificationUserClient; // private final FcmTokenValidationClient fcmTokenValidationClient; @Transactional @@ -39,6 +40,10 @@ public SignInResponse signIn(String authAccessToken, SignInRequest request) { // boolean fcmReissueRequired = fcmTokenValidationClient.requestFcmTokenValidation(user.getId()); + if (request.fcmToken() != null && !request.fcmToken().trim().isEmpty()) { + notificationUserClient.updateFcmToken(user.getId(), request.fcmToken()); + } + // return SignInResponse.of(token, authId, request.authType(), user.getId(), fcmReissueRequired); return SignInResponse.of(token, authId, request.authType(), user.getId()); }