Skip to content

Commit 3bdd4fc

Browse files
Merge pull request #192 from DevKor-github/mod/googlelogin
[Mod] google login clientid 설정 수정 및 docker container 한국시간대 설정
2 parents b33bd82 + 39f7215 commit 3bdd4fc

File tree

6 files changed

+29
-25
lines changed

6 files changed

+29
-25
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ jobs:
8080
echo "jwt.refresh.expiration=${{ secrets.JWT_REFRESH_EXPIRATION }}" >> ontime-back/src/main/resources/application.properties
8181
echo "jwt.access.header=${{ secrets.JWT_ACCESS_HEADER }}" >> ontime-back/src/main/resources/application.properties
8282
echo "jwt.refresh.header=${{ secrets.JWT_REFRESH_HEADER }}" >> ontime-back/src/main/resources/application.properties
83-
echo "spring.security.oauth2.client.registration.google.client-id=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_ID }}" >> ontime-back/src/main/resources/application.properties
83+
echo "google.web.client-id = ${{ secrets.GOOGLE_WEB_CLIENT_ID }}" >> ontime-back/src/main/resources/application.properties
84+
echo "google.app.client-id = ${{ secrets.GOOGLE_APP_CLIENT_ID }}" >> ontime-back/src/main/resources/application.properties
8485
echo "spring.security.oauth2.client.registration.google.client-secret=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_SECRET }}" >> ontime-back/src/main/resources/application.properties
8586
echo "spring.security.oauth2.client.registration.google.scope=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_SCOPE }}" >> ontime-back/src/main/resources/application.properties
8687
echo "spring.security.oauth2.client.registration.google.redirect-uri=${{ secrets.SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_REDIRECT_URI }}" >> ontime-back/src/main/resources/application.properties

ontime-back/Dockerfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
FROM openjdk:17
2+
RUN apk add --no-cache tzdata && \
3+
ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
4+
echo "Asia/Seoul" > /etc/timezone
25
WORKDIR /app
36
COPY project.jar app.jar
47
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

ontime-back/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ dependencies {
4949
implementation 'com.auth0:java-jwt:4.4.0'
5050

5151
// oauth
52-
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
52+
// implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
5353

5454
// Swagger
5555
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'

ontime-back/src/main/java/devkor/ontime_back/controller/SocialAuthController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class SocialAuthController {
3838
content = @Content(
3939
schema = @Schema(
4040
type = "object",
41-
example = "{\n \"accessToken\": \"ya29.xxxxxxx\" }"
41+
example = "{\n \"idToken\": \"eyJhbGxxxxxxx\" ,\n \"refreshToken\": \"\"}}"
4242
)
4343
)
4444
)

ontime-back/src/main/java/devkor/ontime_back/dto/SocialUserSignupDto.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

ontime-back/src/main/java/devkor/ontime_back/global/oauth/google/GoogleLoginService.java

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,32 @@
2929

3030
import java.io.IOException;
3131
import java.util.Collections;
32+
import java.util.List;
3233
import java.util.Optional;
3334
import java.util.UUID;
3435

3536
@Slf4j
3637
@Service
37-
@RequiredArgsConstructor
3838
public class GoogleLoginService {
3939

4040
private final JwtTokenProvider jwtTokenProvider;
4141
private final UserRepository userRepository;
4242
private static final String GOOGLE_USER_INFO_URL = "https://www.googleapis.com/userinfo/v2/me";
4343
private static final String GOOGLE_REVOKE_URL = "https://oauth2.googleapis.com/revoke?token=";
4444

45-
@Value("${spring.security.oauth2.client.registration.google.client-id}")
46-
private String clientId;
45+
private final List<String> validClientIds;
46+
47+
public GoogleLoginService(
48+
JwtTokenProvider jwtTokenProvider,
49+
UserRepository userRepository,
50+
@Value("${google.web.client-id}") String webClientId,
51+
@Value("${google.app.client-id}") String appClientId
52+
) {
53+
this.jwtTokenProvider = jwtTokenProvider;
54+
this.userRepository = userRepository;
55+
this.validClientIds = List.of(webClientId, appClientId);
56+
}
57+
4758

4859
public Authentication handleLogin(OAuthGoogleRequestDto oAuthGoogleRequestDto, User user, HttpServletResponse response) throws IOException {
4960
user.updateSocialLoginToken(oAuthGoogleRequestDto.getRefreshToken());
@@ -111,10 +122,14 @@ public Authentication handleRegister(OAuthGoogleRequestDto oAuthGoogleRequestDto
111122
response.setContentType("application/json");
112123
response.setCharacterEncoding("UTF-8");
113124

125+
String msg = savedUser.getRole().name().equals("GUEST") ? "유저의 ROLE이 GUEST이므로 온보딩API를 호출해 온보딩을 진행해야합니다." : "로그인에 성공하였습니다.";
126+
// JSON 응답 생성
114127
String responseBody = String.format(
115-
"{\"message\": \"%s\", \"role\": \"%s\"}",
116-
"회원가입이 완료되었습니다. ROLE이 GUEST이므로 온보딩이 필요합니다.",
117-
savedUser.getRole().name()
128+
"{ \"status\": \"success\", \"code\": \"200\", \"message\": \"%s\", \"data\": { " +
129+
"\"userId\": %d, \"email\": \"%s\", \"name\": \"%s\", " +
130+
"\"spareTime\": %d, \"note\": %s, \"punctualityScore\": %f, \"role\": \"%s\" } }",
131+
msg, savedUser.getId(), savedUser.getEmail(), savedUser.getName(),
132+
savedUser.getSpareTime(), savedUser.getNote() != null ? "\"" + savedUser.getNote() + "\"" : null, savedUser.getPunctualityScore(), savedUser.getRole().name()
118133
);
119134

120135
response.getWriter().write(responseBody);
@@ -127,7 +142,7 @@ public GoogleIdToken.Payload verifyIdentityToken(String identityToken) throws Ex
127142
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(
128143
new NetHttpTransport(),
129144
GsonFactory.getDefaultInstance())
130-
.setAudience(Collections.singletonList(clientId)) // aud 확인
145+
.setAudience(validClientIds) // aud 확인
131146
.build();
132147

133148
GoogleIdToken idToken = verifier.verify(identityToken); // Google의 공개 키를 사용하여 idToken 서명을 검증

0 commit comments

Comments
 (0)