diff --git a/src/main/java/ssu/eatssu/domain/auth/entity/SystemAppleAuthenticator.java b/src/main/java/ssu/eatssu/domain/auth/entity/SystemAppleAuthenticator.java index 904c99b6..b560e71c 100644 --- a/src/main/java/ssu/eatssu/domain/auth/entity/SystemAppleAuthenticator.java +++ b/src/main/java/ssu/eatssu/domain/auth/entity/SystemAppleAuthenticator.java @@ -25,7 +25,7 @@ import java.util.Base64; import java.util.Map; -import static ssu.eatssu.global.handler.response.BaseResponseStatus.INVALID_IDENTITY_TOKEN; +import static ssu.eatssu.global.handler.response.BaseResponseStatus.*; @Component @RequiredArgsConstructor @@ -49,10 +49,19 @@ private OAuthInfo getOAuthInfoByPublicKey(String identityToken, PublicKey public .parseClaimsJws(identityToken) .getBody(); - //Claims 에서 email, providerId(사용자 식별값) 를 추출한다. + Object emailObj = claims.get("email"); + Object providerIdObj = claims.get("sub"); + + if (providerIdObj == null) { + throw new BaseException(NOT_FOUND_PROVIDER_ID); + } + if (emailObj == null) { + throw new BaseException(NOT_FOUND_EMAIL); + } + try { - String email = claims.get("email").toString(); - String providerId = claims.get("sub").toString(); + String email = emailObj.toString(); + String providerId = providerIdObj.toString(); return new OAuthInfo(email, providerId); } catch (ExpiredJwtException exception) { throw new BaseException(INVALID_IDENTITY_TOKEN); diff --git a/src/main/java/ssu/eatssu/domain/user/entity/User.java b/src/main/java/ssu/eatssu/domain/user/entity/User.java index 5dc57fc0..10135982 100644 --- a/src/main/java/ssu/eatssu/domain/user/entity/User.java +++ b/src/main/java/ssu/eatssu/domain/user/entity/User.java @@ -49,7 +49,6 @@ public class User extends BaseTimeEntity { private Long id; @Enumerated(EnumType.STRING) private Role role; - @Column(unique = true) private String email; private String nickname; @Enumerated(EnumType.STRING) diff --git a/src/main/java/ssu/eatssu/global/handler/response/BaseResponseStatus.java b/src/main/java/ssu/eatssu/global/handler/response/BaseResponseStatus.java index 6009d49f..4189568e 100644 --- a/src/main/java/ssu/eatssu/global/handler/response/BaseResponseStatus.java +++ b/src/main/java/ssu/eatssu/global/handler/response/BaseResponseStatus.java @@ -75,6 +75,8 @@ public enum BaseResponseStatus { NOT_FOUND_PARTNERSHIP(false, HttpStatus.NOT_FOUND, 40410, "해당 제휴를 찾을 수 없습니다."), NOT_FOUND_PARTNERSHIP_RESTAURANT(false, HttpStatus.NOT_FOUND, 40411, "해당 제휴 식당을 찾을 수 없습니다."), INVALID_NICKNAME(false, HttpStatus.NOT_FOUND, 40412, "잘못된 닉네임입니다."), + NOT_FOUND_PROVIDER_ID(false, HttpStatus.NOT_FOUND, 40413, "Claims에서 ProviderId(sub)를 찾을 수 없습니다."), + NOT_FOUND_EMAIL(false, HttpStatus.NOT_FOUND, 40414, "Claims에서 이메일을 찾을 수 없습니다."), /** * 405 METHOD_NOT_ALLOWED 지원하지 않은 method 호출