From 666797c09358d0d3520348f9bc3924147f8c389c Mon Sep 17 00:00:00 2001 From: soohyun Date: Wed, 27 Dec 2023 22:44:20 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feature:=20apple,kakao=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EA=B5=AC=ED=98=84,=20=ED=86=A0=ED=81=B0=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EB=A1=9C=EC=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes linkmind/build.gradle | 13 +- .../com/app/linkmind/LinkmindApplication.java | 1 - .../java/com/app/linkmind/config/UserId.java | 11 ++ .../app/linkmind/config/UserIdResolver.java | 45 +++++++ .../app/linkmind/config/jwt/JwtService.java | 88 ++++++++++++++ .../linkmind/controller/AuthController.java | 56 +++++++++ .../request/auth/SignInRequestDto.java | 4 + .../response/auth/SignInResponseDto.java | 8 ++ .../response/auth/TokenResponseDto.java | 8 ++ .../com/app/linkmind/exception/Error.java | 17 ++- .../com/app/linkmind/exception/Success.java | 4 + .../model/UnauthorizedException.java | 10 ++ .../model/UnprocessableEntityException.java | 9 ++ .../infrastructure/UserRepository.java | 22 ++++ .../linkmind/service/auth/AuthService.java | 114 ++++++++++++++++++ .../auth/apple/AppleSignInService.java | 38 ++++++ .../auth/apple/response/ApplePublicKey.java | 11 ++ .../auth/apple/response/ApplePublicKeys.java | 17 +++ .../auth/apple/verify/AppleJwtParser.java | 54 +++++++++ .../auth/apple/verify/EncryptUtils.java | 25 ++++ .../auth/apple/verify/PublicKeyGenerator.java | 49 ++++++++ .../auth/kakao/KakaoSignInService.java | 33 +++++ 23 files changed, 633 insertions(+), 4 deletions(-) create mode 100644 .DS_Store create mode 100644 linkmind/src/main/java/com/app/linkmind/config/UserId.java create mode 100644 linkmind/src/main/java/com/app/linkmind/config/UserIdResolver.java create mode 100644 linkmind/src/main/java/com/app/linkmind/config/jwt/JwtService.java create mode 100644 linkmind/src/main/java/com/app/linkmind/controller/AuthController.java create mode 100644 linkmind/src/main/java/com/app/linkmind/controller/request/auth/SignInRequestDto.java create mode 100644 linkmind/src/main/java/com/app/linkmind/controller/response/auth/SignInResponseDto.java create mode 100644 linkmind/src/main/java/com/app/linkmind/controller/response/auth/TokenResponseDto.java create mode 100644 linkmind/src/main/java/com/app/linkmind/exception/model/UnauthorizedException.java create mode 100644 linkmind/src/main/java/com/app/linkmind/exception/model/UnprocessableEntityException.java create mode 100644 linkmind/src/main/java/com/app/linkmind/infrastructure/UserRepository.java create mode 100644 linkmind/src/main/java/com/app/linkmind/service/auth/AuthService.java create mode 100644 linkmind/src/main/java/com/app/linkmind/service/auth/apple/AppleSignInService.java create mode 100644 linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKey.java create mode 100644 linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKeys.java create mode 100644 linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/AppleJwtParser.java create mode 100644 linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/EncryptUtils.java create mode 100644 linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/PublicKeyGenerator.java create mode 100644 linkmind/src/main/java/com/app/linkmind/service/auth/kakao/KakaoSignInService.java diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4246d468f8c27eb9a802725fbfded47448378252 GIT binary patch literal 6148 zcmeHK!EO^V5FMu}^{PV30i+%+acopVi&7yj+mIeO^wLFe02H#_2v*&$t8CI7qDXs& zU*JRd5`L$BW4ox;mMg8$j5K~@&y4MT-nG|6qz3cs1yP5HG?cLwp}0fX&)SeyXjum; z*T)&Wstk#(?xY2;(w**MPAK% zz2B;})?Rt=*I%t7{q))M*Ti>%d+OwIz-#ycqrpQ~ofIkN$w3Y0MKUc5TYiO)JB{d=4(Wh~bOhW1mF_dR zLE{0Uc07x)M1%ohKp4132EtybH}7!{GPE!t3_MH*cz-ZZ#yDW@(QO?l+!X-WMza&x z{L9EWCSV+}_6QF|`Bb1!RpE-Ed^*}qh>HW(9(_8gaQRSSWEE~G%8icxjSD9gdz4Zb z5C(2Du;!~BKK~E@e*eFnBsF0`82GOkQ0-wd9N>|{+1hwGK5Gs13zUW9YL9 signIn( + @RequestHeader("Authorization") String socialAccessToken, + @RequestBody SignInRequestDto requestDto + ) { + return ApiResponse.success(Success.LOGIN_SUCCESS, authService.signIn(socialAccessToken, requestDto)); + } + + @PostMapping("/token") + @ResponseStatus(HttpStatus.OK) + public ApiResponse reissueToken(@RequestHeader String refreshToken) { + return ApiResponse.success(Success.RE_ISSUE_TOKEN_SUCCESS, authService.issueToken(refreshToken)); + } + + @PostMapping("/sign-out") + @ResponseStatus(HttpStatus.OK) + public ApiResponse signOut(@UserId Long userId) { + authService.signOut(userId); + return ApiResponse.success(Success.SIGNOUT_SUCCESS); + } + + @DeleteMapping("/withdraw") + @ResponseStatus(HttpStatus.OK) + public ApiResponse withdraw(@UserId Long userId){ + authService.withdraw(userId); + return ApiResponse.success(Success.DELETE_USER_SUCCESS); + } +} diff --git a/linkmind/src/main/java/com/app/linkmind/controller/request/auth/SignInRequestDto.java b/linkmind/src/main/java/com/app/linkmind/controller/request/auth/SignInRequestDto.java new file mode 100644 index 00000000..d3ae0d11 --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/controller/request/auth/SignInRequestDto.java @@ -0,0 +1,4 @@ +package com.app.linkmind.controller.request.auth; + +public record SignInRequestDto(String socialType, String fcmToken) { +} diff --git a/linkmind/src/main/java/com/app/linkmind/controller/response/auth/SignInResponseDto.java b/linkmind/src/main/java/com/app/linkmind/controller/response/auth/SignInResponseDto.java new file mode 100644 index 00000000..6d1b423c --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/controller/response/auth/SignInResponseDto.java @@ -0,0 +1,8 @@ +package com.app.linkmind.controller.response.auth; + +public record SignInResponseDto(Long userId, String accessToken, String refreshToken, String fcmToken, Boolean isRegistered,Boolean FcmIsAllowed) { + public static SignInResponseDto of(Long userId, String accessToken, String refreshToken, String fcmToken, + Boolean isRegistered, Boolean fcmIsAllowed){ + return new SignInResponseDto(userId,accessToken, refreshToken,fcmToken,isRegistered,fcmIsAllowed); + } +} diff --git a/linkmind/src/main/java/com/app/linkmind/controller/response/auth/TokenResponseDto.java b/linkmind/src/main/java/com/app/linkmind/controller/response/auth/TokenResponseDto.java new file mode 100644 index 00000000..c8825a93 --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/controller/response/auth/TokenResponseDto.java @@ -0,0 +1,8 @@ +package com.app.linkmind.controller.response.auth; + +public record TokenResponseDto(String accessToken, String refreshToken) { + public static TokenResponseDto of(String accessToken, String refreshToken){ + return new TokenResponseDto(accessToken,refreshToken); + } + +} diff --git a/linkmind/src/main/java/com/app/linkmind/exception/Error.java b/linkmind/src/main/java/com/app/linkmind/exception/Error.java index b42157df..d40b7642 100644 --- a/linkmind/src/main/java/com/app/linkmind/exception/Error.java +++ b/linkmind/src/main/java/com/app/linkmind/exception/Error.java @@ -16,10 +16,25 @@ public enum Error { DUMMY_NOT_FOUND(HttpStatus.NOT_FOUND, "더미에 데이터가 덜 들어간 것 같아요"), RESERVATION_NOT_FOUND(HttpStatus.NOT_FOUND, "예약정보를 찾지 못했어요"), + + NOT_FOUND_USER_EXCEPTION(HttpStatus.NOT_FOUND, "찾을 수 없는 유저입니다."), + + /** + * 401 UNAUTHORIZED EXCEPTION + */ + TOKEN_TIME_EXPIRED_EXCEPTION(HttpStatus.UNAUTHORIZED, "만료된 토큰입니다."), + INVALID_APPLE_PUBLIC_KEY(HttpStatus.UNAUTHORIZED, "유효하지않은 애플 퍼블릭 키 입니다."), + EXPIRED_APPLE_IDENTITY_TOKEN(HttpStatus.UNAUTHORIZED, "만료된 아이덴티티 토큰입니다."), + INVALID_APPLE_IDENTITY_TOKEN(HttpStatus.UNAUTHORIZED, "잘못된 아이덴티티 토큰입니다."), + + UNPROCESSABLE_ENTITY_DELETE_EXCEPTION(HttpStatus.UNPROCESSABLE_ENTITY, "서버에서 요청을 이해해 삭제하려는 도중 문제가 생겼습니다."), /** * 500 INTERNAL_SERVER_ERROR */ - INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "알 수 없는 서버 에러가 발생했습니다") + INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "알 수 없는 서버 에러가 발생했습니다"), + INVALID_ENCRYPT_COMMUNICATION(HttpStatus.INTERNAL_SERVER_ERROR, "ios 통신 증명 과정 중 문제가 발생했습니다."), + CREATE_PUBLIC_KEY_EXCEPTION(HttpStatus.INTERNAL_SERVER_ERROR, "publickey 생성 과정 중 문제가 발생했습니다."), + ; private final HttpStatus httpStatus; diff --git a/linkmind/src/main/java/com/app/linkmind/exception/Success.java b/linkmind/src/main/java/com/app/linkmind/exception/Success.java index c6986a79..6d5180ff 100644 --- a/linkmind/src/main/java/com/app/linkmind/exception/Success.java +++ b/linkmind/src/main/java/com/app/linkmind/exception/Success.java @@ -22,6 +22,10 @@ public enum Success { GET_RESERVATION_SUCCESS(HttpStatus.OK, "항공권 페이지 조회 성공"), GET_MAIN_SUCCESS(HttpStatus.OK, "메인 페이지 조회 성공"), GET_TICKET_SUCCESS(HttpStatus.OK, "티켓 선택 페이지 조회 성공"), + LOGIN_SUCCESS(HttpStatus.OK, "로그인 성공"), + RE_ISSUE_TOKEN_SUCCESS(HttpStatus.OK, "토큰 재발급 성공"), + SIGNOUT_SUCCESS(HttpStatus.OK, "로그아웃 성공"), + DELETE_USER_SUCCESS(HttpStatus.OK, "유저 삭제 성공"), /** * 204 NO_CONTENT diff --git a/linkmind/src/main/java/com/app/linkmind/exception/model/UnauthorizedException.java b/linkmind/src/main/java/com/app/linkmind/exception/model/UnauthorizedException.java new file mode 100644 index 00000000..54f87b09 --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/exception/model/UnauthorizedException.java @@ -0,0 +1,10 @@ +package com.app.linkmind.exception.model; + +import com.app.linkmind.exception.Error; + +public class UnauthorizedException extends CustomException{ + public UnauthorizedException(Error error, String message) { + super(error, message); + } + +} diff --git a/linkmind/src/main/java/com/app/linkmind/exception/model/UnprocessableEntityException.java b/linkmind/src/main/java/com/app/linkmind/exception/model/UnprocessableEntityException.java new file mode 100644 index 00000000..645224b1 --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/exception/model/UnprocessableEntityException.java @@ -0,0 +1,9 @@ +package com.app.linkmind.exception.model; + +import com.app.linkmind.exception.Error; + +public class UnprocessableEntityException extends CustomException{ + public UnprocessableEntityException(Error error, String message) { + super(error, message); + } +} diff --git a/linkmind/src/main/java/com/app/linkmind/infrastructure/UserRepository.java b/linkmind/src/main/java/com/app/linkmind/infrastructure/UserRepository.java new file mode 100644 index 00000000..fd9eb12a --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/infrastructure/UserRepository.java @@ -0,0 +1,22 @@ +package com.app.linkmind.infrastructure; + +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.app.linkmind.domain.SocialType; +import com.app.linkmind.domain.User; + +public interface UserRepository extends JpaRepository { + Boolean existsBySocialIdAndSocialType(String socialId, SocialType socialType); + + Optional findByUserId(Long userId); + + Optional findBySocialIdAndSocialType(String socialId, SocialType socialType); + + boolean existsByNickname(String s); + + Optional findByRefreshToken(String refreshToken); + + Long deleteByUserId(Long userId); +} diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/AuthService.java b/linkmind/src/main/java/com/app/linkmind/service/auth/AuthService.java new file mode 100644 index 00000000..815256df --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/service/auth/AuthService.java @@ -0,0 +1,114 @@ +package com.app.linkmind.service.auth; + +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.app.linkmind.config.jwt.JwtService; +import com.app.linkmind.controller.request.auth.SignInRequestDto; +import com.app.linkmind.controller.response.auth.SignInResponseDto; +import com.app.linkmind.controller.response.auth.TokenResponseDto; +import com.app.linkmind.domain.SocialType; +import com.app.linkmind.domain.User; +import com.app.linkmind.exception.Error; +import com.app.linkmind.exception.model.NotFoundException; +import com.app.linkmind.exception.model.UnprocessableEntityException; +import com.app.linkmind.infrastructure.UserRepository; +import com.app.linkmind.service.auth.apple.AppleSignInService; +import com.app.linkmind.service.auth.kakao.KakaoSignInService; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class AuthService { + private final AppleSignInService appleSignInService; + private final KakaoSignInService kakaoSignInService; + private final JwtService jwtService; + + private final UserRepository userRepository; + + + private final Long TOKEN_EXPIRATION_TIME_ACCESS = 100 * 24 * 60 * 60 * 1000L; + private final Long TOKEN_EXPIRATION_TIME_REFRESH = 200 * 24 * 60 * 60 * 1000L; + + @Transactional + public SignInResponseDto signIn(String socialAccessToken, SignInRequestDto requestDto) { + SocialType socialType = SocialType.valueOf(requestDto.socialType()); + String socialId = login(socialType, socialAccessToken); + + Boolean isRegistered = userRepository.existsBySocialIdAndSocialType(socialId, socialType); + + if (!isRegistered) { + User newUser = User.builder() + .nickname("토스터"+socialId) + .socialId(socialId) + .socialType(socialType).build(); + newUser.updateFcmIsAllowed(true); //신규 유저면 true박고 + userRepository.save(newUser); + } + + User user = userRepository.findBySocialIdAndSocialType(socialId, socialType) + .orElseThrow(() -> new NotFoundException(Error.NOT_FOUND_USER_EXCEPTION, Error.NOT_FOUND_USER_EXCEPTION.getMessage())); + + // jwt 발급 (액세스 토큰, 리프레쉬 토큰) + String accessToken = jwtService.issuedToken(String.valueOf(user.getUserId()), TOKEN_EXPIRATION_TIME_ACCESS); + String refreshToken = jwtService.issuedToken(String.valueOf(user.getUserId()), TOKEN_EXPIRATION_TIME_REFRESH); + String fcmToken = requestDto.fcmToken(); + + user.updateRefreshToken(refreshToken); + user.updateFcmToken(fcmToken); + + return SignInResponseDto.of(user.getUserId(), accessToken, refreshToken, fcmToken, isRegistered,user.getFcmIsAllowed()); + } + + @Transactional + public TokenResponseDto issueToken(String refreshToken) { + jwtService.verifyToken(refreshToken); + + User user = userRepository.findByRefreshToken(refreshToken) + .orElseThrow(() -> new NotFoundException(Error.NOT_FOUND_USER_EXCEPTION, Error.NOT_FOUND_USER_EXCEPTION.getMessage())); + + // jwt 발급 (액세스 토큰, 리프레쉬 토큰) + String newAccessToken = jwtService.issuedToken(String.valueOf(user.getUserId()), TOKEN_EXPIRATION_TIME_ACCESS); + String newRefreshToken = jwtService.issuedToken(String.valueOf(user.getUserId()), TOKEN_EXPIRATION_TIME_REFRESH); + + user.updateRefreshToken(newRefreshToken); + + return TokenResponseDto.of(newAccessToken, newRefreshToken); + } + + @Transactional + public void signOut(Long userId) { + User user = userRepository.findByUserId(userId) + .orElseThrow(() -> new NotFoundException(Error.NOT_FOUND_USER_EXCEPTION, Error.NOT_FOUND_USER_EXCEPTION.getMessage())); + user.updateRefreshToken(null); + user.updateFcmToken(null); + } + + private String login(SocialType socialType, String socialAccessToken) { + if (socialType.toString() == "APPLE") { + return appleSignInService.getAppleId(socialAccessToken); + } + else if (socialType.toString() == "KAKAO") { + return kakaoSignInService.getKaKaoId(socialAccessToken); + } + else{ + return "ads"; + } + } + + @Transactional + public void withdraw(Long userId){ + User user = userRepository.findByUserId(userId).orElse(null); + System.out.println(userId); + if (user == null) { + throw new NotFoundException(Error.NOT_FOUND_USER_EXCEPTION, Error.NOT_FOUND_USER_EXCEPTION.getMessage()); + } + + Long res = userRepository.deleteByUserId(userId); //res가 삭제된 컬럼의 개수 즉, 1이 아니면 뭔가 알 수 없는 에러. + System.out.println(res + "개의 컬럼이 삭제되었습니다."); + if (res!=1){ + throw new UnprocessableEntityException(Error.UNPROCESSABLE_ENTITY_DELETE_EXCEPTION, Error.UNPROCESSABLE_ENTITY_DELETE_EXCEPTION.getMessage()); + } + } +} diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/AppleSignInService.java b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/AppleSignInService.java new file mode 100644 index 00000000..23c3d130 --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/AppleSignInService.java @@ -0,0 +1,38 @@ +package com.app.linkmind.service.auth.apple; + +import java.security.PublicKey; +import java.util.Map; + +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestClient; + +import com.app.linkmind.service.auth.apple.response.ApplePublicKeys; +import com.app.linkmind.service.auth.apple.verify.AppleJwtParser; +import com.app.linkmind.service.auth.apple.verify.PublicKeyGenerator; + +import io.jsonwebtoken.Claims; +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class AppleSignInService { + private static final String APPLE_URI = "https://appleid.apple.com/auth"; + private static final RestClient restClient = RestClient.create(APPLE_URI); + private static AppleJwtParser appleJwtParser; + private static PublicKeyGenerator publicKeyGenerator; + + public String getAppleId(String identityToken) { + Map headers = appleJwtParser.parseHeaders(identityToken); + + ResponseEntity result = restClient.get() + .uri("/keys") + .retrieve() + .toEntity(ApplePublicKeys.class); + + PublicKey publicKey = publicKeyGenerator.generatePublicKey(headers, result.getBody()); + + Claims claims = appleJwtParser.parsePublicKeyAndGetClaims(identityToken, publicKey); + return claims.getSubject(); + } +} diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKey.java b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKey.java new file mode 100644 index 00000000..ab5a3de9 --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKey.java @@ -0,0 +1,11 @@ +package com.app.linkmind.service.auth.apple.response; + +public record ApplePublicKey( + String kty, + String kid, + String use, + String alg, + String n, + String e +) { +} diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKeys.java b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKeys.java new file mode 100644 index 00000000..ce92ed63 --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKeys.java @@ -0,0 +1,17 @@ +package com.app.linkmind.service.auth.apple.response; + +import java.util.List; + +import com.app.linkmind.exception.Error; +import com.app.linkmind.exception.model.CustomException; + +public record ApplePublicKeys(List keys) { + + public ApplePublicKey getMatchesKey(String alg, String kid) { + return this.keys + .stream() + .filter(k -> k.alg().equals(alg) && k.kid().equals(kid)) + .findFirst() + .orElseThrow(() -> new CustomException(Error.INVALID_APPLE_PUBLIC_KEY, Error.INVALID_APPLE_PUBLIC_KEY.getMessage())); + } +} diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/AppleJwtParser.java b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/AppleJwtParser.java new file mode 100644 index 00000000..87362887 --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/AppleJwtParser.java @@ -0,0 +1,54 @@ +package com.app.linkmind.service.auth.apple.verify; + +import java.security.PublicKey; +import java.util.Base64; +import java.util.Map; + +import org.springframework.stereotype.Component; +import org.springframework.util.Base64Utils; + +import com.app.linkmind.exception.Error; +import com.app.linkmind.exception.model.CustomException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.MalformedJwtException; +import io.jsonwebtoken.UnsupportedJwtException; + +@Component +public class AppleJwtParser { + + private static final String IDENTITY_TOKEN_VALUE_DELIMITER = "\\."; + private static final int HEADER_INDEX = 0; + + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + + public Map parseHeaders(String identityToken) { + try { + String encodedHeader = identityToken.split(IDENTITY_TOKEN_VALUE_DELIMITER)[HEADER_INDEX]; + String decodedHeader = new String(Base64.getDecoder().decode(encodedHeader)); + return OBJECT_MAPPER.readValue(decodedHeader, Map.class); + + } catch (JsonProcessingException | ArrayIndexOutOfBoundsException e) { + throw new CustomException(Error.INVALID_APPLE_IDENTITY_TOKEN, Error.INVALID_APPLE_IDENTITY_TOKEN.getMessage()); + } + } + + public Claims parsePublicKeyAndGetClaims(String idToken, PublicKey publicKey) { + try { + return Jwts.parserBuilder() + .setSigningKey(publicKey) + .build() + .parseClaimsJws(idToken) + .getBody(); + + } catch (ExpiredJwtException e) { + throw new CustomException(Error.EXPIRED_APPLE_IDENTITY_TOKEN, Error.EXPIRED_APPLE_IDENTITY_TOKEN.getMessage()); + } catch (UnsupportedJwtException | MalformedJwtException | IllegalArgumentException e) { + throw new CustomException(Error.INVALID_APPLE_IDENTITY_TOKEN, Error.INVALID_APPLE_IDENTITY_TOKEN.getMessage()); + } + } +} \ No newline at end of file diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/EncryptUtils.java b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/EncryptUtils.java new file mode 100644 index 00000000..6d3f3261 --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/EncryptUtils.java @@ -0,0 +1,25 @@ +package com.app.linkmind.service.auth.apple.verify; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +import com.app.linkmind.exception.Error; +import com.app.linkmind.exception.model.CustomException; + +public class EncryptUtils { + + public static String encrypt(String value) { + try { + MessageDigest sha256 = MessageDigest.getInstance("SHA-256"); + byte[] digest = sha256.digest(value.getBytes(StandardCharsets.UTF_8)); + StringBuilder hexString = new StringBuilder(); + for (byte b : digest) { + hexString.append(String.format("%02x", b)); + } + return hexString.toString(); + } catch (NoSuchAlgorithmException e) { + throw new CustomException(Error.INVALID_ENCRYPT_COMMUNICATION, Error.INVALID_ENCRYPT_COMMUNICATION.getMessage()); + } + } +} diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/PublicKeyGenerator.java b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/PublicKeyGenerator.java new file mode 100644 index 00000000..9950e0c3 --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/PublicKeyGenerator.java @@ -0,0 +1,49 @@ +package com.app.linkmind.service.auth.apple.verify; + +import java.math.BigInteger; +import java.security.KeyFactory; +import java.security.NoSuchAlgorithmException; +import java.security.PublicKey; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.RSAPublicKeySpec; +import java.util.Base64; +import java.util.Map; + +import org.springframework.stereotype.Component; + +import com.app.linkmind.exception.Error; +import com.app.linkmind.exception.model.CustomException; +import com.app.linkmind.service.auth.apple.response.ApplePublicKey; +import com.app.linkmind.service.auth.apple.response.ApplePublicKeys; + +@Component +public class PublicKeyGenerator { + + private static final String SIGN_ALGORITHM_HEADER_KEY = "alg"; + private static final String KEY_ID_HEADER_KEY = "kid"; + private static final int POSITIVE_SIGN_NUMBER = 1; + + public PublicKey generatePublicKey(Map headers, ApplePublicKeys applePublicKeys) { + ApplePublicKey applePublicKey = + applePublicKeys.getMatchesKey(headers.get(SIGN_ALGORITHM_HEADER_KEY), headers.get(KEY_ID_HEADER_KEY)); + + return generatePublicKeyWithApplePublicKey(applePublicKey); + } + + private PublicKey generatePublicKeyWithApplePublicKey(ApplePublicKey publicKey) { + byte[] nBytes = Base64.getDecoder().decode(publicKey.n()); + byte[] eBytes = Base64.getDecoder().decode(publicKey.e()); + + BigInteger n = new BigInteger(POSITIVE_SIGN_NUMBER, nBytes); + BigInteger e = new BigInteger(POSITIVE_SIGN_NUMBER, eBytes); + + RSAPublicKeySpec publicKeySpec = new RSAPublicKeySpec(n, e); + + try { + KeyFactory keyFactory = KeyFactory.getInstance(publicKey.kty()); + return keyFactory.generatePublic(publicKeySpec); + } catch (NoSuchAlgorithmException | InvalidKeySpecException exception) { + throw new CustomException(Error.CREATE_PUBLIC_KEY_EXCEPTION, Error.CREATE_PUBLIC_KEY_EXCEPTION.getMessage()); + } + } +} diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/kakao/KakaoSignInService.java b/linkmind/src/main/java/com/app/linkmind/service/auth/kakao/KakaoSignInService.java new file mode 100644 index 00000000..b4ddc297 --- /dev/null +++ b/linkmind/src/main/java/com/app/linkmind/service/auth/kakao/KakaoSignInService.java @@ -0,0 +1,33 @@ +package com.app.linkmind.service.auth.kakao; + +import java.util.Map; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonArray; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class KakaoSignInService { + @Value("${jwt.KAKAO_URL}") + private String KAKAO_URL; + + public String getKaKaoId(String accessToken) { + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.add("Authorization","Bearer "+ accessToken); + HttpEntity httpEntity = new HttpEntity<>(headers); + ResponseEntity responseData; + responseData = restTemplate.postForEntity(KAKAO_URL,httpEntity,Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + return objectMapper.convertValue(responseData.getBody(), Map.class).get("id").toString(); //소셜 id만 가져오는듯. + } +} From 88e4f0fa00b9c48cef1dcd8df7b20ab432ac8708 Mon Sep 17 00:00:00 2001 From: soohyun Date: Thu, 28 Dec 2023 22:33:06 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feature:=20=EC=B9=B4=EC=B9=B4=EC=98=A4=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8,=20=EC=95=A0=ED=94=8C=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- linkmind/settings.gradle | 2 +- .../java/com/app/linkmind/controller/.gitkeep | 0 .../java/com/app/linkmind/domain/.gitkeep | 0 .../app/linkmind/external/client/aws/.gitkeep | 0 .../com/app/linkmind/infrastructure/.gitkeep | 0 .../java/com/app/linkmind/service/.gitkeep | 0 .../LinkmindApplication.java | 2 +- .../advice/ControllerExceptionAdvice.java | 6 ++--- .../common/dto/ApiResponse.java | 6 ++--- .../{linkmind => toaster}/config/UserId.java | 2 +- .../config/UserIdResolver.java | 4 +-- .../config/jwt/JwtService.java | 8 +++--- .../controller/AuthController.java | 16 ++++++------ .../request/auth/SignInRequestDto.java | 2 +- .../response/auth/SignInResponseDto.java | 2 +- .../response/auth/TokenResponseDto.java | 2 +- .../domain/Category.java | 3 +-- .../domain/CategoryManagement.java | 2 +- .../domain/Reminder.java | 2 +- .../domain/SocialType.java | 2 +- .../{linkmind => toaster}/domain/Toast.java | 4 +-- .../{linkmind => toaster}/domain/User.java | 2 +- .../exception/Error.java | 2 +- .../exception/Success.java | 2 +- .../exception/model/CustomException.java | 4 +-- .../exception/model/NotFoundException.java | 4 +-- .../model/UnauthorizedException.java | 4 +-- .../model/UnprocessableEntityException.java | 4 +-- .../external/client/aws}/.gitkeep | 0 .../infrastructure/UserRepository.java | 8 +++--- .../service/auth/AuthService.java | 26 +++++++++---------- .../auth/apple/AppleSignInService.java | 8 +++--- .../auth/apple/response/ApplePublicKey.java | 2 +- .../auth/apple/response/ApplePublicKeys.java | 6 ++--- .../auth/apple/verify/AppleJwtParser.java | 7 +++-- .../auth/apple/verify/EncryptUtils.java | 6 ++--- .../auth/apple/verify/PublicKeyGenerator.java | 10 +++---- .../auth/kakao/KakaoSignInService.java | 2 +- .../LinkmindApplicationTests.java | 2 +- 39 files changed, 81 insertions(+), 83 deletions(-) delete mode 100644 linkmind/src/main/java/com/app/linkmind/controller/.gitkeep delete mode 100644 linkmind/src/main/java/com/app/linkmind/domain/.gitkeep delete mode 100644 linkmind/src/main/java/com/app/linkmind/external/client/aws/.gitkeep delete mode 100644 linkmind/src/main/java/com/app/linkmind/infrastructure/.gitkeep delete mode 100644 linkmind/src/main/java/com/app/linkmind/service/.gitkeep rename linkmind/src/main/java/com/app/{linkmind => toaster}/LinkmindApplication.java (91%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/common/advice/ControllerExceptionAdvice.java (85%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/common/dto/ApiResponse.java (87%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/config/UserId.java (88%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/config/UserIdResolver.java (95%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/config/jwt/JwtService.java (91%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/controller/AuthController.java (79%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/controller/request/auth/SignInRequestDto.java (59%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/controller/response/auth/SignInResponseDto.java (88%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/controller/response/auth/TokenResponseDto.java (80%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/domain/Category.java (88%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/domain/CategoryManagement.java (96%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/domain/Reminder.java (96%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/domain/SocialType.java (79%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/domain/Toast.java (92%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/domain/User.java (97%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/exception/Error.java (97%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/exception/Success.java (96%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/exception/model/CustomException.java (77%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/exception/model/NotFoundException.java (63%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/exception/model/UnauthorizedException.java (64%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/exception/model/UnprocessableEntityException.java (66%) rename linkmind/src/main/java/com/app/{linkmind/config => toaster/external/client/aws}/.gitkeep (100%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/infrastructure/UserRepository.java (74%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/service/auth/AuthService.java (84%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/service/auth/apple/AppleSignInService.java (80%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/service/auth/apple/response/ApplePublicKey.java (67%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/service/auth/apple/response/ApplePublicKeys.java (71%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/service/auth/apple/verify/AppleJwtParser.java (89%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/service/auth/apple/verify/EncryptUtils.java (81%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/service/auth/apple/verify/PublicKeyGenerator.java (84%) rename linkmind/src/main/java/com/app/{linkmind => toaster}/service/auth/kakao/KakaoSignInService.java (96%) rename linkmind/src/test/java/com/app/{linkmind => toaster}/LinkmindApplicationTests.java (87%) diff --git a/linkmind/settings.gradle b/linkmind/settings.gradle index 2f295815..2b453734 100644 --- a/linkmind/settings.gradle +++ b/linkmind/settings.gradle @@ -1 +1 @@ -rootProject.name = 'linkmind' +rootProject.name = 'toaster' diff --git a/linkmind/src/main/java/com/app/linkmind/controller/.gitkeep b/linkmind/src/main/java/com/app/linkmind/controller/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/linkmind/src/main/java/com/app/linkmind/domain/.gitkeep b/linkmind/src/main/java/com/app/linkmind/domain/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/linkmind/src/main/java/com/app/linkmind/external/client/aws/.gitkeep b/linkmind/src/main/java/com/app/linkmind/external/client/aws/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/linkmind/src/main/java/com/app/linkmind/infrastructure/.gitkeep b/linkmind/src/main/java/com/app/linkmind/infrastructure/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/linkmind/src/main/java/com/app/linkmind/service/.gitkeep b/linkmind/src/main/java/com/app/linkmind/service/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/linkmind/src/main/java/com/app/linkmind/LinkmindApplication.java b/linkmind/src/main/java/com/app/toaster/LinkmindApplication.java similarity index 91% rename from linkmind/src/main/java/com/app/linkmind/LinkmindApplication.java rename to linkmind/src/main/java/com/app/toaster/LinkmindApplication.java index 7ae6efaf..2e484cdf 100644 --- a/linkmind/src/main/java/com/app/linkmind/LinkmindApplication.java +++ b/linkmind/src/main/java/com/app/toaster/LinkmindApplication.java @@ -1,4 +1,4 @@ -package com.app.linkmind; +package com.app.toaster; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/linkmind/src/main/java/com/app/linkmind/common/advice/ControllerExceptionAdvice.java b/linkmind/src/main/java/com/app/toaster/common/advice/ControllerExceptionAdvice.java similarity index 85% rename from linkmind/src/main/java/com/app/linkmind/common/advice/ControllerExceptionAdvice.java rename to linkmind/src/main/java/com/app/toaster/common/advice/ControllerExceptionAdvice.java index a63dd5bd..0ddbf1a7 100644 --- a/linkmind/src/main/java/com/app/linkmind/common/advice/ControllerExceptionAdvice.java +++ b/linkmind/src/main/java/com/app/toaster/common/advice/ControllerExceptionAdvice.java @@ -1,12 +1,12 @@ -package com.app.linkmind.common.advice; +package com.app.toaster.common.advice; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; -import com.app.linkmind.common.dto.ApiResponse; -import com.app.linkmind.exception.model.CustomException; +import com.app.toaster.common.dto.ApiResponse; +import com.app.toaster.exception.model.CustomException; import lombok.NoArgsConstructor; diff --git a/linkmind/src/main/java/com/app/linkmind/common/dto/ApiResponse.java b/linkmind/src/main/java/com/app/toaster/common/dto/ApiResponse.java similarity index 87% rename from linkmind/src/main/java/com/app/linkmind/common/dto/ApiResponse.java rename to linkmind/src/main/java/com/app/toaster/common/dto/ApiResponse.java index cd3ffb21..466c4b93 100644 --- a/linkmind/src/main/java/com/app/linkmind/common/dto/ApiResponse.java +++ b/linkmind/src/main/java/com/app/toaster/common/dto/ApiResponse.java @@ -1,7 +1,7 @@ -package com.app.linkmind.common.dto; +package com.app.toaster.common.dto; -import com.app.linkmind.exception.Error; -import com.app.linkmind.exception.Success; +import com.app.toaster.exception.Error; +import com.app.toaster.exception.Success; import lombok.AccessLevel; import lombok.AllArgsConstructor; diff --git a/linkmind/src/main/java/com/app/linkmind/config/UserId.java b/linkmind/src/main/java/com/app/toaster/config/UserId.java similarity index 88% rename from linkmind/src/main/java/com/app/linkmind/config/UserId.java rename to linkmind/src/main/java/com/app/toaster/config/UserId.java index e875abfa..88bc0e8f 100644 --- a/linkmind/src/main/java/com/app/linkmind/config/UserId.java +++ b/linkmind/src/main/java/com/app/toaster/config/UserId.java @@ -1,4 +1,4 @@ -package com.app.linkmind.config; +package com.app.toaster.config; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/linkmind/src/main/java/com/app/linkmind/config/UserIdResolver.java b/linkmind/src/main/java/com/app/toaster/config/UserIdResolver.java similarity index 95% rename from linkmind/src/main/java/com/app/linkmind/config/UserIdResolver.java rename to linkmind/src/main/java/com/app/toaster/config/UserIdResolver.java index d99dc77d..2f2566e5 100644 --- a/linkmind/src/main/java/com/app/linkmind/config/UserIdResolver.java +++ b/linkmind/src/main/java/com/app/toaster/config/UserIdResolver.java @@ -1,4 +1,4 @@ -package com.app.linkmind.config; +package com.app.toaster.config; import org.springframework.core.MethodParameter; import org.springframework.stereotype.Component; @@ -7,7 +7,7 @@ import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; -import com.app.linkmind.config.jwt.JwtService; +import com.app.toaster.config.jwt.JwtService; import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.constraints.NotNull; diff --git a/linkmind/src/main/java/com/app/linkmind/config/jwt/JwtService.java b/linkmind/src/main/java/com/app/toaster/config/jwt/JwtService.java similarity index 91% rename from linkmind/src/main/java/com/app/linkmind/config/jwt/JwtService.java rename to linkmind/src/main/java/com/app/toaster/config/jwt/JwtService.java index 70c5748a..e87d86e2 100644 --- a/linkmind/src/main/java/com/app/linkmind/config/jwt/JwtService.java +++ b/linkmind/src/main/java/com/app/toaster/config/jwt/JwtService.java @@ -1,4 +1,4 @@ -package com.app.linkmind.config.jwt; +package com.app.toaster.config.jwt; import static io.jsonwebtoken.Jwts.*; @@ -12,9 +12,9 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import com.app.linkmind.exception.Error; -import com.app.linkmind.exception.model.NotFoundException; -import com.app.linkmind.exception.model.UnauthorizedException; +import com.app.toaster.exception.Error; +import com.app.toaster.exception.model.NotFoundException; +import com.app.toaster.exception.model.UnauthorizedException; import io.jsonwebtoken.Claims; import io.jsonwebtoken.ExpiredJwtException; diff --git a/linkmind/src/main/java/com/app/linkmind/controller/AuthController.java b/linkmind/src/main/java/com/app/toaster/controller/AuthController.java similarity index 79% rename from linkmind/src/main/java/com/app/linkmind/controller/AuthController.java rename to linkmind/src/main/java/com/app/toaster/controller/AuthController.java index 92445129..b8e68b0a 100644 --- a/linkmind/src/main/java/com/app/linkmind/controller/AuthController.java +++ b/linkmind/src/main/java/com/app/toaster/controller/AuthController.java @@ -1,4 +1,4 @@ -package com.app.linkmind.controller; +package com.app.toaster.controller; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.DeleteMapping; @@ -9,13 +9,13 @@ import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; -import com.app.linkmind.common.dto.ApiResponse; -import com.app.linkmind.config.UserId; -import com.app.linkmind.controller.request.auth.SignInRequestDto; -import com.app.linkmind.controller.response.auth.SignInResponseDto; -import com.app.linkmind.controller.response.auth.TokenResponseDto; -import com.app.linkmind.exception.Success; -import com.app.linkmind.service.auth.AuthService; +import com.app.toaster.common.dto.ApiResponse; +import com.app.toaster.config.UserId; +import com.app.toaster.controller.request.auth.SignInRequestDto; +import com.app.toaster.controller.response.auth.SignInResponseDto; +import com.app.toaster.controller.response.auth.TokenResponseDto; +import com.app.toaster.exception.Success; +import com.app.toaster.service.auth.AuthService; import lombok.RequiredArgsConstructor; diff --git a/linkmind/src/main/java/com/app/linkmind/controller/request/auth/SignInRequestDto.java b/linkmind/src/main/java/com/app/toaster/controller/request/auth/SignInRequestDto.java similarity index 59% rename from linkmind/src/main/java/com/app/linkmind/controller/request/auth/SignInRequestDto.java rename to linkmind/src/main/java/com/app/toaster/controller/request/auth/SignInRequestDto.java index d3ae0d11..a8876bfe 100644 --- a/linkmind/src/main/java/com/app/linkmind/controller/request/auth/SignInRequestDto.java +++ b/linkmind/src/main/java/com/app/toaster/controller/request/auth/SignInRequestDto.java @@ -1,4 +1,4 @@ -package com.app.linkmind.controller.request.auth; +package com.app.toaster.controller.request.auth; public record SignInRequestDto(String socialType, String fcmToken) { } diff --git a/linkmind/src/main/java/com/app/linkmind/controller/response/auth/SignInResponseDto.java b/linkmind/src/main/java/com/app/toaster/controller/response/auth/SignInResponseDto.java similarity index 88% rename from linkmind/src/main/java/com/app/linkmind/controller/response/auth/SignInResponseDto.java rename to linkmind/src/main/java/com/app/toaster/controller/response/auth/SignInResponseDto.java index 6d1b423c..165d8ca0 100644 --- a/linkmind/src/main/java/com/app/linkmind/controller/response/auth/SignInResponseDto.java +++ b/linkmind/src/main/java/com/app/toaster/controller/response/auth/SignInResponseDto.java @@ -1,4 +1,4 @@ -package com.app.linkmind.controller.response.auth; +package com.app.toaster.controller.response.auth; public record SignInResponseDto(Long userId, String accessToken, String refreshToken, String fcmToken, Boolean isRegistered,Boolean FcmIsAllowed) { public static SignInResponseDto of(Long userId, String accessToken, String refreshToken, String fcmToken, diff --git a/linkmind/src/main/java/com/app/linkmind/controller/response/auth/TokenResponseDto.java b/linkmind/src/main/java/com/app/toaster/controller/response/auth/TokenResponseDto.java similarity index 80% rename from linkmind/src/main/java/com/app/linkmind/controller/response/auth/TokenResponseDto.java rename to linkmind/src/main/java/com/app/toaster/controller/response/auth/TokenResponseDto.java index c8825a93..37f2e926 100644 --- a/linkmind/src/main/java/com/app/linkmind/controller/response/auth/TokenResponseDto.java +++ b/linkmind/src/main/java/com/app/toaster/controller/response/auth/TokenResponseDto.java @@ -1,4 +1,4 @@ -package com.app.linkmind.controller.response.auth; +package com.app.toaster.controller.response.auth; public record TokenResponseDto(String accessToken, String refreshToken) { public static TokenResponseDto of(String accessToken, String refreshToken){ diff --git a/linkmind/src/main/java/com/app/linkmind/domain/Category.java b/linkmind/src/main/java/com/app/toaster/domain/Category.java similarity index 88% rename from linkmind/src/main/java/com/app/linkmind/domain/Category.java rename to linkmind/src/main/java/com/app/toaster/domain/Category.java index 890070b2..ac315cde 100644 --- a/linkmind/src/main/java/com/app/linkmind/domain/Category.java +++ b/linkmind/src/main/java/com/app/toaster/domain/Category.java @@ -1,11 +1,10 @@ -package com.app.linkmind.domain; +package com.app.toaster.domain; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import lombok.AccessLevel; -import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/linkmind/src/main/java/com/app/linkmind/domain/CategoryManagement.java b/linkmind/src/main/java/com/app/toaster/domain/CategoryManagement.java similarity index 96% rename from linkmind/src/main/java/com/app/linkmind/domain/CategoryManagement.java rename to linkmind/src/main/java/com/app/toaster/domain/CategoryManagement.java index c659fa02..f9ee9ab1 100644 --- a/linkmind/src/main/java/com/app/linkmind/domain/CategoryManagement.java +++ b/linkmind/src/main/java/com/app/toaster/domain/CategoryManagement.java @@ -1,4 +1,4 @@ -package com.app.linkmind.domain; +package com.app.toaster.domain; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; diff --git a/linkmind/src/main/java/com/app/linkmind/domain/Reminder.java b/linkmind/src/main/java/com/app/toaster/domain/Reminder.java similarity index 96% rename from linkmind/src/main/java/com/app/linkmind/domain/Reminder.java rename to linkmind/src/main/java/com/app/toaster/domain/Reminder.java index 02dc95a0..7a1ee229 100644 --- a/linkmind/src/main/java/com/app/linkmind/domain/Reminder.java +++ b/linkmind/src/main/java/com/app/toaster/domain/Reminder.java @@ -1,4 +1,4 @@ -package com.app.linkmind.domain; +package com.app.toaster.domain; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; diff --git a/linkmind/src/main/java/com/app/linkmind/domain/SocialType.java b/linkmind/src/main/java/com/app/toaster/domain/SocialType.java similarity index 79% rename from linkmind/src/main/java/com/app/linkmind/domain/SocialType.java rename to linkmind/src/main/java/com/app/toaster/domain/SocialType.java index bceaa83b..9d5e83d1 100644 --- a/linkmind/src/main/java/com/app/linkmind/domain/SocialType.java +++ b/linkmind/src/main/java/com/app/toaster/domain/SocialType.java @@ -1,4 +1,4 @@ -package com.app.linkmind.domain; +package com.app.toaster.domain; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/linkmind/src/main/java/com/app/linkmind/domain/Toast.java b/linkmind/src/main/java/com/app/toaster/domain/Toast.java similarity index 92% rename from linkmind/src/main/java/com/app/linkmind/domain/Toast.java rename to linkmind/src/main/java/com/app/toaster/domain/Toast.java index 653b08d0..e2d80d13 100644 --- a/linkmind/src/main/java/com/app/linkmind/domain/Toast.java +++ b/linkmind/src/main/java/com/app/toaster/domain/Toast.java @@ -1,4 +1,4 @@ -package com.app.linkmind.domain; +package com.app.toaster.domain; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; @@ -21,7 +21,7 @@ public class Toast { private Long Id; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "toast_id") + @JoinColumn(name = "user_id") private User user; private String title; diff --git a/linkmind/src/main/java/com/app/linkmind/domain/User.java b/linkmind/src/main/java/com/app/toaster/domain/User.java similarity index 97% rename from linkmind/src/main/java/com/app/linkmind/domain/User.java rename to linkmind/src/main/java/com/app/toaster/domain/User.java index 21357c7a..f868c81f 100644 --- a/linkmind/src/main/java/com/app/linkmind/domain/User.java +++ b/linkmind/src/main/java/com/app/toaster/domain/User.java @@ -1,4 +1,4 @@ -package com.app.linkmind.domain; +package com.app.toaster.domain; import java.util.Objects; diff --git a/linkmind/src/main/java/com/app/linkmind/exception/Error.java b/linkmind/src/main/java/com/app/toaster/exception/Error.java similarity index 97% rename from linkmind/src/main/java/com/app/linkmind/exception/Error.java rename to linkmind/src/main/java/com/app/toaster/exception/Error.java index d40b7642..266b7be0 100644 --- a/linkmind/src/main/java/com/app/linkmind/exception/Error.java +++ b/linkmind/src/main/java/com/app/toaster/exception/Error.java @@ -1,4 +1,4 @@ -package com.app.linkmind.exception; +package com.app.toaster.exception; import org.springframework.http.HttpStatus; diff --git a/linkmind/src/main/java/com/app/linkmind/exception/Success.java b/linkmind/src/main/java/com/app/toaster/exception/Success.java similarity index 96% rename from linkmind/src/main/java/com/app/linkmind/exception/Success.java rename to linkmind/src/main/java/com/app/toaster/exception/Success.java index 6d5180ff..dbc1d5d2 100644 --- a/linkmind/src/main/java/com/app/linkmind/exception/Success.java +++ b/linkmind/src/main/java/com/app/toaster/exception/Success.java @@ -1,4 +1,4 @@ -package com.app.linkmind.exception; +package com.app.toaster.exception; import org.springframework.http.HttpStatus; diff --git a/linkmind/src/main/java/com/app/linkmind/exception/model/CustomException.java b/linkmind/src/main/java/com/app/toaster/exception/model/CustomException.java similarity index 77% rename from linkmind/src/main/java/com/app/linkmind/exception/model/CustomException.java rename to linkmind/src/main/java/com/app/toaster/exception/model/CustomException.java index b0657a81..ea0a02fe 100644 --- a/linkmind/src/main/java/com/app/linkmind/exception/model/CustomException.java +++ b/linkmind/src/main/java/com/app/toaster/exception/model/CustomException.java @@ -1,6 +1,6 @@ -package com.app.linkmind.exception.model; +package com.app.toaster.exception.model; -import com.app.linkmind.exception.Error; +import com.app.toaster.exception.Error; import lombok.Getter; diff --git a/linkmind/src/main/java/com/app/linkmind/exception/model/NotFoundException.java b/linkmind/src/main/java/com/app/toaster/exception/model/NotFoundException.java similarity index 63% rename from linkmind/src/main/java/com/app/linkmind/exception/model/NotFoundException.java rename to linkmind/src/main/java/com/app/toaster/exception/model/NotFoundException.java index 7040e492..ec9d9650 100644 --- a/linkmind/src/main/java/com/app/linkmind/exception/model/NotFoundException.java +++ b/linkmind/src/main/java/com/app/toaster/exception/model/NotFoundException.java @@ -1,6 +1,6 @@ -package com.app.linkmind.exception.model; +package com.app.toaster.exception.model; -import com.app.linkmind.exception.Error; +import com.app.toaster.exception.Error; public class NotFoundException extends CustomException { public NotFoundException(Error error, String message) { diff --git a/linkmind/src/main/java/com/app/linkmind/exception/model/UnauthorizedException.java b/linkmind/src/main/java/com/app/toaster/exception/model/UnauthorizedException.java similarity index 64% rename from linkmind/src/main/java/com/app/linkmind/exception/model/UnauthorizedException.java rename to linkmind/src/main/java/com/app/toaster/exception/model/UnauthorizedException.java index 54f87b09..5c6c4877 100644 --- a/linkmind/src/main/java/com/app/linkmind/exception/model/UnauthorizedException.java +++ b/linkmind/src/main/java/com/app/toaster/exception/model/UnauthorizedException.java @@ -1,6 +1,6 @@ -package com.app.linkmind.exception.model; +package com.app.toaster.exception.model; -import com.app.linkmind.exception.Error; +import com.app.toaster.exception.Error; public class UnauthorizedException extends CustomException{ public UnauthorizedException(Error error, String message) { diff --git a/linkmind/src/main/java/com/app/linkmind/exception/model/UnprocessableEntityException.java b/linkmind/src/main/java/com/app/toaster/exception/model/UnprocessableEntityException.java similarity index 66% rename from linkmind/src/main/java/com/app/linkmind/exception/model/UnprocessableEntityException.java rename to linkmind/src/main/java/com/app/toaster/exception/model/UnprocessableEntityException.java index 645224b1..dd2490fe 100644 --- a/linkmind/src/main/java/com/app/linkmind/exception/model/UnprocessableEntityException.java +++ b/linkmind/src/main/java/com/app/toaster/exception/model/UnprocessableEntityException.java @@ -1,6 +1,6 @@ -package com.app.linkmind.exception.model; +package com.app.toaster.exception.model; -import com.app.linkmind.exception.Error; +import com.app.toaster.exception.Error; public class UnprocessableEntityException extends CustomException{ public UnprocessableEntityException(Error error, String message) { diff --git a/linkmind/src/main/java/com/app/linkmind/config/.gitkeep b/linkmind/src/main/java/com/app/toaster/external/client/aws/.gitkeep similarity index 100% rename from linkmind/src/main/java/com/app/linkmind/config/.gitkeep rename to linkmind/src/main/java/com/app/toaster/external/client/aws/.gitkeep diff --git a/linkmind/src/main/java/com/app/linkmind/infrastructure/UserRepository.java b/linkmind/src/main/java/com/app/toaster/infrastructure/UserRepository.java similarity index 74% rename from linkmind/src/main/java/com/app/linkmind/infrastructure/UserRepository.java rename to linkmind/src/main/java/com/app/toaster/infrastructure/UserRepository.java index fd9eb12a..6c240e9e 100644 --- a/linkmind/src/main/java/com/app/linkmind/infrastructure/UserRepository.java +++ b/linkmind/src/main/java/com/app/toaster/infrastructure/UserRepository.java @@ -1,11 +1,11 @@ -package com.app.linkmind.infrastructure; +package com.app.toaster.infrastructure; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; -import com.app.linkmind.domain.SocialType; -import com.app.linkmind.domain.User; +import com.app.toaster.domain.SocialType; +import com.app.toaster.domain.User; public interface UserRepository extends JpaRepository { Boolean existsBySocialIdAndSocialType(String socialId, SocialType socialType); @@ -14,7 +14,7 @@ public interface UserRepository extends JpaRepository { Optional findBySocialIdAndSocialType(String socialId, SocialType socialType); - boolean existsByNickname(String s); + Boolean existsByNickname(String s); Optional findByRefreshToken(String refreshToken); diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/AuthService.java b/linkmind/src/main/java/com/app/toaster/service/auth/AuthService.java similarity index 84% rename from linkmind/src/main/java/com/app/linkmind/service/auth/AuthService.java rename to linkmind/src/main/java/com/app/toaster/service/auth/AuthService.java index 815256df..a41ebc49 100644 --- a/linkmind/src/main/java/com/app/linkmind/service/auth/AuthService.java +++ b/linkmind/src/main/java/com/app/toaster/service/auth/AuthService.java @@ -1,20 +1,20 @@ -package com.app.linkmind.service.auth; +package com.app.toaster.service.auth; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.app.linkmind.config.jwt.JwtService; -import com.app.linkmind.controller.request.auth.SignInRequestDto; -import com.app.linkmind.controller.response.auth.SignInResponseDto; -import com.app.linkmind.controller.response.auth.TokenResponseDto; -import com.app.linkmind.domain.SocialType; -import com.app.linkmind.domain.User; -import com.app.linkmind.exception.Error; -import com.app.linkmind.exception.model.NotFoundException; -import com.app.linkmind.exception.model.UnprocessableEntityException; -import com.app.linkmind.infrastructure.UserRepository; -import com.app.linkmind.service.auth.apple.AppleSignInService; -import com.app.linkmind.service.auth.kakao.KakaoSignInService; +import com.app.toaster.config.jwt.JwtService; +import com.app.toaster.controller.request.auth.SignInRequestDto; +import com.app.toaster.controller.response.auth.SignInResponseDto; +import com.app.toaster.controller.response.auth.TokenResponseDto; +import com.app.toaster.domain.SocialType; +import com.app.toaster.domain.User; +import com.app.toaster.exception.Error; +import com.app.toaster.exception.model.NotFoundException; +import com.app.toaster.exception.model.UnprocessableEntityException; +import com.app.toaster.infrastructure.UserRepository; +import com.app.toaster.service.auth.apple.AppleSignInService; +import com.app.toaster.service.auth.kakao.KakaoSignInService; import lombok.RequiredArgsConstructor; diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/AppleSignInService.java b/linkmind/src/main/java/com/app/toaster/service/auth/apple/AppleSignInService.java similarity index 80% rename from linkmind/src/main/java/com/app/linkmind/service/auth/apple/AppleSignInService.java rename to linkmind/src/main/java/com/app/toaster/service/auth/apple/AppleSignInService.java index 23c3d130..94f31d13 100644 --- a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/AppleSignInService.java +++ b/linkmind/src/main/java/com/app/toaster/service/auth/apple/AppleSignInService.java @@ -1,4 +1,4 @@ -package com.app.linkmind.service.auth.apple; +package com.app.toaster.service.auth.apple; import java.security.PublicKey; import java.util.Map; @@ -7,9 +7,9 @@ import org.springframework.stereotype.Service; import org.springframework.web.client.RestClient; -import com.app.linkmind.service.auth.apple.response.ApplePublicKeys; -import com.app.linkmind.service.auth.apple.verify.AppleJwtParser; -import com.app.linkmind.service.auth.apple.verify.PublicKeyGenerator; +import com.app.toaster.service.auth.apple.response.ApplePublicKeys; +import com.app.toaster.service.auth.apple.verify.AppleJwtParser; +import com.app.toaster.service.auth.apple.verify.PublicKeyGenerator; import io.jsonwebtoken.Claims; import lombok.RequiredArgsConstructor; diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKey.java b/linkmind/src/main/java/com/app/toaster/service/auth/apple/response/ApplePublicKey.java similarity index 67% rename from linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKey.java rename to linkmind/src/main/java/com/app/toaster/service/auth/apple/response/ApplePublicKey.java index ab5a3de9..808848bc 100644 --- a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKey.java +++ b/linkmind/src/main/java/com/app/toaster/service/auth/apple/response/ApplePublicKey.java @@ -1,4 +1,4 @@ -package com.app.linkmind.service.auth.apple.response; +package com.app.toaster.service.auth.apple.response; public record ApplePublicKey( String kty, diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKeys.java b/linkmind/src/main/java/com/app/toaster/service/auth/apple/response/ApplePublicKeys.java similarity index 71% rename from linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKeys.java rename to linkmind/src/main/java/com/app/toaster/service/auth/apple/response/ApplePublicKeys.java index ce92ed63..aa8be947 100644 --- a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/response/ApplePublicKeys.java +++ b/linkmind/src/main/java/com/app/toaster/service/auth/apple/response/ApplePublicKeys.java @@ -1,9 +1,9 @@ -package com.app.linkmind.service.auth.apple.response; +package com.app.toaster.service.auth.apple.response; import java.util.List; -import com.app.linkmind.exception.Error; -import com.app.linkmind.exception.model.CustomException; +import com.app.toaster.exception.Error; +import com.app.toaster.exception.model.CustomException; public record ApplePublicKeys(List keys) { diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/AppleJwtParser.java b/linkmind/src/main/java/com/app/toaster/service/auth/apple/verify/AppleJwtParser.java similarity index 89% rename from linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/AppleJwtParser.java rename to linkmind/src/main/java/com/app/toaster/service/auth/apple/verify/AppleJwtParser.java index 87362887..e2a65407 100644 --- a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/AppleJwtParser.java +++ b/linkmind/src/main/java/com/app/toaster/service/auth/apple/verify/AppleJwtParser.java @@ -1,14 +1,13 @@ -package com.app.linkmind.service.auth.apple.verify; +package com.app.toaster.service.auth.apple.verify; import java.security.PublicKey; import java.util.Base64; import java.util.Map; import org.springframework.stereotype.Component; -import org.springframework.util.Base64Utils; -import com.app.linkmind.exception.Error; -import com.app.linkmind.exception.model.CustomException; +import com.app.toaster.exception.Error; +import com.app.toaster.exception.model.CustomException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/EncryptUtils.java b/linkmind/src/main/java/com/app/toaster/service/auth/apple/verify/EncryptUtils.java similarity index 81% rename from linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/EncryptUtils.java rename to linkmind/src/main/java/com/app/toaster/service/auth/apple/verify/EncryptUtils.java index 6d3f3261..0635998e 100644 --- a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/EncryptUtils.java +++ b/linkmind/src/main/java/com/app/toaster/service/auth/apple/verify/EncryptUtils.java @@ -1,11 +1,11 @@ -package com.app.linkmind.service.auth.apple.verify; +package com.app.toaster.service.auth.apple.verify; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; -import com.app.linkmind.exception.Error; -import com.app.linkmind.exception.model.CustomException; +import com.app.toaster.exception.Error; +import com.app.toaster.exception.model.CustomException; public class EncryptUtils { diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/PublicKeyGenerator.java b/linkmind/src/main/java/com/app/toaster/service/auth/apple/verify/PublicKeyGenerator.java similarity index 84% rename from linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/PublicKeyGenerator.java rename to linkmind/src/main/java/com/app/toaster/service/auth/apple/verify/PublicKeyGenerator.java index 9950e0c3..03795412 100644 --- a/linkmind/src/main/java/com/app/linkmind/service/auth/apple/verify/PublicKeyGenerator.java +++ b/linkmind/src/main/java/com/app/toaster/service/auth/apple/verify/PublicKeyGenerator.java @@ -1,4 +1,4 @@ -package com.app.linkmind.service.auth.apple.verify; +package com.app.toaster.service.auth.apple.verify; import java.math.BigInteger; import java.security.KeyFactory; @@ -11,10 +11,10 @@ import org.springframework.stereotype.Component; -import com.app.linkmind.exception.Error; -import com.app.linkmind.exception.model.CustomException; -import com.app.linkmind.service.auth.apple.response.ApplePublicKey; -import com.app.linkmind.service.auth.apple.response.ApplePublicKeys; +import com.app.toaster.exception.Error; +import com.app.toaster.exception.model.CustomException; +import com.app.toaster.service.auth.apple.response.ApplePublicKey; +import com.app.toaster.service.auth.apple.response.ApplePublicKeys; @Component public class PublicKeyGenerator { diff --git a/linkmind/src/main/java/com/app/linkmind/service/auth/kakao/KakaoSignInService.java b/linkmind/src/main/java/com/app/toaster/service/auth/kakao/KakaoSignInService.java similarity index 96% rename from linkmind/src/main/java/com/app/linkmind/service/auth/kakao/KakaoSignInService.java rename to linkmind/src/main/java/com/app/toaster/service/auth/kakao/KakaoSignInService.java index b4ddc297..338691dc 100644 --- a/linkmind/src/main/java/com/app/linkmind/service/auth/kakao/KakaoSignInService.java +++ b/linkmind/src/main/java/com/app/toaster/service/auth/kakao/KakaoSignInService.java @@ -1,4 +1,4 @@ -package com.app.linkmind.service.auth.kakao; +package com.app.toaster.service.auth.kakao; import java.util.Map; diff --git a/linkmind/src/test/java/com/app/linkmind/LinkmindApplicationTests.java b/linkmind/src/test/java/com/app/toaster/LinkmindApplicationTests.java similarity index 87% rename from linkmind/src/test/java/com/app/linkmind/LinkmindApplicationTests.java rename to linkmind/src/test/java/com/app/toaster/LinkmindApplicationTests.java index 8d024c1b..43f0eec4 100644 --- a/linkmind/src/test/java/com/app/linkmind/LinkmindApplicationTests.java +++ b/linkmind/src/test/java/com/app/toaster/LinkmindApplicationTests.java @@ -1,4 +1,4 @@ -package com.app.linkmind; +package com.app.toaster; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; From f0ce7abef08ad7ad4473c7653f4ac34dace97da2 Mon Sep 17 00:00:00 2001 From: soohyun Date: Thu, 28 Dec 2023 22:54:52 +0900 Subject: [PATCH 3/4] =?UTF-8?q?refactor:=20merge=20=EC=B6=A9=EB=8F=8C=20?= =?UTF-8?q?=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/app/toaster/LinkmindApplication.java | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 linkmind/src/main/java/com/app/toaster/LinkmindApplication.java diff --git a/linkmind/src/main/java/com/app/toaster/LinkmindApplication.java b/linkmind/src/main/java/com/app/toaster/LinkmindApplication.java deleted file mode 100644 index 2e484cdf..00000000 --- a/linkmind/src/main/java/com/app/toaster/LinkmindApplication.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.app.toaster; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -@SpringBootApplication -public class LinkmindApplication { - - public static void main(String[] args) { - SpringApplication.run(LinkmindApplication.class, args); - } - -} From 9e9e0f6fde75680304d2ed07df3d2fa7f7c885cd Mon Sep 17 00:00:00 2001 From: mmihye Date: Sun, 31 Dec 2023 23:48:24 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[#11]=20refactor=20:=20=ED=86=A0=ED=81=B0?= =?UTF-8?q?=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 --- .../main/java/com/app/toaster/service/auth/AuthService.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/linkmind/src/main/java/com/app/toaster/service/auth/AuthService.java b/linkmind/src/main/java/com/app/toaster/service/auth/AuthService.java index a41ebc49..abec4048 100644 --- a/linkmind/src/main/java/com/app/toaster/service/auth/AuthService.java +++ b/linkmind/src/main/java/com/app/toaster/service/auth/AuthService.java @@ -28,8 +28,9 @@ public class AuthService { private final UserRepository userRepository; - private final Long TOKEN_EXPIRATION_TIME_ACCESS = 100 * 24 * 60 * 60 * 1000L; - private final Long TOKEN_EXPIRATION_TIME_REFRESH = 200 * 24 * 60 * 60 * 1000L; + private final Long TOKEN_EXPIRATION_TIME_ACCESS = 1 * 60 * 1000L; + private final Long TOKEN_EXPIRATION_TIME_REFRESH = 3 * 60 * 1000L; + @Transactional public SignInResponseDto signIn(String socialAccessToken, SignInRequestDto requestDto) {