Skip to content

Commit 3f24fb3

Browse files
authored
Merge pull request #29 from gdsc-ssu/feat/#21
2 parents 4a5e1cf + ca7ee99 commit 3f24fb3

File tree

20 files changed

+737
-492
lines changed

20 files changed

+737
-492
lines changed

.github/workflows/google-cloudrun-docker.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ jobs:
6565
env:
6666
GCP_CREDENTIALS_JSON: ${{ secrets.GCP_CREDENTIALS_JSON }}
6767

68+
# 5-3) Apple OAuth P8 파일 생성 (Secrets → 실제파일)
69+
- name: Create Apple OAuth P8 file
70+
run: echo "$APPLE_P8_KEY" > AuthKey_HXCK973689.p8
71+
env:
72+
APPLE_P8_KEY: ${{ secrets.APPLE_P8_KEY }}
6873

6974
# 6) Dockerfile 복호화 (Secrets에서 가져옴)
7075
- name: Decode Dockerfile from secret and save it
@@ -102,16 +107,17 @@ jobs:
102107
DB_PASSWORD=${{ secrets.DB_PASSWORD }},
103108
AI_GEMINI_API_KEY=${{ secrets.AI_GEMINI_API_KEY }},
104109
KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }},
105-
GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }},
106-
GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }},
107110
GOOGLE_APPLICATION_CREDENTIALS=${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }},
108111
AI_GEMINI_CHAT_PROMPT_LOCATION=${{ secrets.AI_GEMINI_CHAT_PROMPT_LOCATION }},
109112
AI_GEMINI_SUMMARY_PROMPT_LOCATION=${{ secrets.AI_GEMINI_SUMMARY_PROMPT_LOCATION }},
110113
MAIL_USERNAME=${{ secrets.MAIL_USERNAME }},
111114
MAIL_PASSWORD=${{ secrets.MAIL_PASSWORD }},
112115
JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }},
113-
GOOGLE_REDIRECT=${{ secrets.GOOGLE_REDIRECT }},
114-
KAKAO_REDIRECT=${{ secrets.KAKAO_REDIRECT }}
116+
KAKAO_REDIRECT=${{ secrets.KAKAO_REDIRECT }},
117+
APPLE_TEAM_ID=${{ secrets.APPLE_TEAM_ID }},
118+
APPLE_CLIENT_ID=${{ secrets.APPLE_CLIENT_ID }},
119+
APPLE_KEY_ID=${{ secrets.APPLE_KEY_ID }},
120+
APPLE_REDIRECT_URI=${{ secrets.APPLE_REDIRECT_URI }}
115121
116122
# 10) 배포 후 URL 출력
117123
- name: 'Show output'

build.gradle

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,14 @@ dependencies {
2727
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
2828
implementation 'org.springframework.boot:spring-boot-starter-security'
2929
implementation("org.springframework.boot:spring-boot-starter-oauth2-client")
30-
implementation 'com.auth0:java-jwt:4.5.0'
3130
implementation 'org.springframework.boot:spring-boot-starter-web'
3231
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'
3332

33+
// JWT 토큰 검증을 위한 의존성
34+
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
35+
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
36+
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'
37+
3438
// google api
3539
implementation platform('com.google.cloud:libraries-bom:26.1.0')
3640
implementation 'com.google.cloud:google-cloud-speech'
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.gdg.poppet.auth.application.dto.response;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
import lombok.NoArgsConstructor;
8+
9+
@Data
10+
@NoArgsConstructor
11+
@AllArgsConstructor
12+
@Builder
13+
public class AppleProfileDTO {
14+
@JsonProperty("sub")
15+
private String sub; // 사용자 고유 식별자
16+
17+
@JsonProperty("email")
18+
private String email; // 이메일 (첫 로그인시에만 제공)
19+
20+
@JsonProperty("email_verified")
21+
private Boolean emailVerified;
22+
23+
@JsonProperty("is_private_email")
24+
private Boolean isPrivateEmail;
25+
26+
@JsonProperty("real_user_status")
27+
private Integer realUserStatus;
28+
29+
@JsonProperty("aud")
30+
private String aud; // 앱 ID
31+
32+
@JsonProperty("iss")
33+
private String iss; // 발급자 (https://appleid.apple.com)
34+
35+
@JsonProperty("iat")
36+
private Long iat; // 발급 시간
37+
38+
@JsonProperty("exp")
39+
private Long exp; // 만료 시간
40+
41+
@JsonProperty("auth_time")
42+
private Long authTime; // 인증 시간
43+
44+
@JsonProperty("nonce_supported")
45+
private Boolean nonceSupported;
46+
47+
// 사용자 식별을 위한 ID 반환
48+
public String getId() {
49+
return this.sub;
50+
}
51+
52+
// 이메일이 있을 때만 반환
53+
public String getValidEmail() {
54+
return (email != null && !email.trim().isEmpty()) ? email : null;
55+
}
56+
}

src/main/java/com/gdg/poppet/auth/application/dto/response/GoogleBasicProfileDTO.java

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

src/main/java/com/gdg/poppet/auth/application/dto/response/GoogleExtraProfileDTO.java

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

src/main/java/com/gdg/poppet/auth/application/dto/response/GoogleOAuthTokenDTO.java

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

src/main/java/com/gdg/poppet/auth/application/dto/response/KakaoOAuthTokenDTO.java

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

src/main/java/com/gdg/poppet/auth/application/service/AuthService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
public interface AuthService {
88
OAuthResult kakaoOAuthLogin(String accessCode);
9-
OAuthResult googleOAuthLogin(String accessCode);
109
OAuthResult kakaoOAuthLoginWithTokens(String accessToken);
11-
OAuthResult googleOAuthLoginWithTokens(String idToken, String accessToken);
10+
OAuthResult appleOAuthLoginWithTokens(String identityToken);
1211
}

0 commit comments

Comments
 (0)