diff --git a/src/main/java/sopt/org/HMH/domain/challenge/dto/request/ChallengeRequest.java b/src/main/java/sopt/org/HMH/domain/challenge/dto/request/ChallengeRequest.java index 9efb7640..09740b0a 100644 --- a/src/main/java/sopt/org/HMH/domain/challenge/dto/request/ChallengeRequest.java +++ b/src/main/java/sopt/org/HMH/domain/challenge/dto/request/ChallengeRequest.java @@ -1,10 +1,11 @@ package sopt.org.HMH.domain.challenge.dto.request; +import com.fasterxml.jackson.annotation.JsonProperty; import sopt.org.HMH.domain.app.dto.request.AppGoalTimeRequest; - import java.util.List; public record ChallengeRequest( + Integer period, Long goalTime, List apps diff --git a/src/main/java/sopt/org/HMH/domain/user/controller/UserController.java b/src/main/java/sopt/org/HMH/domain/user/controller/UserController.java index 3b7904f3..b7e433fe 100644 --- a/src/main/java/sopt/org/HMH/domain/user/controller/UserController.java +++ b/src/main/java/sopt/org/HMH/domain/user/controller/UserController.java @@ -10,7 +10,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import sopt.org.HMH.domain.user.domain.exception.UserSuccess; -import sopt.org.HMH.domain.user.dto.request.SocialLoginRequest; +import sopt.org.HMH.domain.user.dto.request.SocialPlatformRequest; +import sopt.org.HMH.domain.user.dto.request.SocialSignUpRequest; import sopt.org.HMH.domain.user.dto.response.LoginResponse; import sopt.org.HMH.domain.user.service.UserService; import sopt.org.HMH.global.auth.jwt.JwtProvider; @@ -28,13 +29,23 @@ public class UserController { @PostMapping("/login") public ResponseEntity> login( @RequestHeader("Authorization") String socialAccessToken, - @RequestBody SocialLoginRequest request + @RequestBody SocialPlatformRequest request ) { return ResponseEntity .status(UserSuccess.LOGIN_SUCCESS.getHttpStatus()) .body(ApiResponse.success(UserSuccess.LOGIN_SUCCESS, userService.login(socialAccessToken, request))); } + @PostMapping("/signup") + public ResponseEntity> signup( + @RequestHeader("Authorization") String socialAccessToken, + @RequestBody SocialSignUpRequest request + ) { + return ResponseEntity + .status(UserSuccess.SIGNUP_SUCCESS.getHttpStatus()) + .body(ApiResponse.success(UserSuccess.SIGNUP_SUCCESS, userService.signup(socialAccessToken, request))); + } + @GetMapping("/reissue") public ResponseEntity> reissue( @RequestHeader("Authorization") String refreshToken diff --git a/src/main/java/sopt/org/HMH/domain/user/domain/OnboardingInfo.java b/src/main/java/sopt/org/HMH/domain/user/domain/OnboardingInfo.java new file mode 100644 index 00000000..ef4dcc03 --- /dev/null +++ b/src/main/java/sopt/org/HMH/domain/user/domain/OnboardingInfo.java @@ -0,0 +1,36 @@ +package sopt.org.HMH.domain.user.domain; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@Entity +@Table(name = "onboarding_info") +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class OnboardingInfo { + + @Id + @Column(name = "onboarding_info_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + @JoinColumn(name = "onboarding_info_id") + private List problem; + + private String averageUseTime; +} diff --git a/src/main/java/sopt/org/HMH/domain/user/domain/OnboardingProblem.java b/src/main/java/sopt/org/HMH/domain/user/domain/OnboardingProblem.java new file mode 100644 index 00000000..80e349c5 --- /dev/null +++ b/src/main/java/sopt/org/HMH/domain/user/domain/OnboardingProblem.java @@ -0,0 +1,29 @@ +package sopt.org.HMH.domain.user.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@Entity +@Table(name = "problem") +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +@Builder +public class OnboardingProblem { + + @Id + @Column(name = "problem_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String problem; +} diff --git a/src/main/java/sopt/org/HMH/domain/user/domain/User.java b/src/main/java/sopt/org/HMH/domain/user/domain/User.java index 0e704ccf..9b704cee 100644 --- a/src/main/java/sopt/org/HMH/domain/user/domain/User.java +++ b/src/main/java/sopt/org/HMH/domain/user/domain/User.java @@ -7,12 +7,17 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OneToOne; import jakarta.persistence.Table; +import java.util.List; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import sopt.org.HMH.domain.challenge.domain.Challenge; import sopt.org.HMH.global.auth.social.SocialPlatform; import sopt.org.HMH.global.common.domain.BaseTimeEntity; @@ -42,6 +47,13 @@ public class User extends BaseTimeEntity { @Column(name = "profile_image_url") private String profileImageUrl; + @OneToOne + @JoinColumn(name = "onboarding_info_id") + private OnboardingInfo onboardingInfo; + + @OneToMany(mappedBy = "user") + private List challenges; + public void updateSocialInfo(String nickname, String profileImageUrl) { this.name = nickname; this.profileImageUrl = profileImageUrl; diff --git a/src/main/java/sopt/org/HMH/domain/user/domain/exception/UserError.java b/src/main/java/sopt/org/HMH/domain/user/domain/exception/UserError.java index e615d58d..4b582c83 100644 --- a/src/main/java/sopt/org/HMH/domain/user/domain/exception/UserError.java +++ b/src/main/java/sopt/org/HMH/domain/user/domain/exception/UserError.java @@ -9,6 +9,7 @@ public enum UserError implements ErrorBase { // 400 BAD REQUEST INVALID_USER(HttpStatus.BAD_REQUEST, "Principle 객체가 없습니다."), + DUPLICATE_USER(HttpStatus.BAD_REQUEST, "이미 회원가입된 유저입니다."), // 401 UNAUTHORIZED diff --git a/src/main/java/sopt/org/HMH/domain/user/domain/exception/UserSuccess.java b/src/main/java/sopt/org/HMH/domain/user/domain/exception/UserSuccess.java index 637f7863..9bf5b14a 100644 --- a/src/main/java/sopt/org/HMH/domain/user/domain/exception/UserSuccess.java +++ b/src/main/java/sopt/org/HMH/domain/user/domain/exception/UserSuccess.java @@ -8,6 +8,7 @@ public enum UserSuccess implements SuccessBase { LOGIN_SUCCESS(HttpStatus.OK, "로그인에 성공했습니다."), + SIGNUP_SUCCESS(HttpStatus.OK, "회원가입에 성공했습니다."), REISSUE_SUCCESS(HttpStatus.OK, "토큰 재발급에 성공했습니다."), LOGOUT_SUCCESS(HttpStatus.OK, "로그아웃에 성공했습니다."), ; diff --git a/src/main/java/sopt/org/HMH/domain/user/dto/request/OnboardingRequest.java b/src/main/java/sopt/org/HMH/domain/user/dto/request/OnboardingRequest.java new file mode 100644 index 00000000..d7c7cecf --- /dev/null +++ b/src/main/java/sopt/org/HMH/domain/user/dto/request/OnboardingRequest.java @@ -0,0 +1,12 @@ +package sopt.org.HMH.domain.user.dto.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; + +public record OnboardingRequest( + String averageUseTime, + + @JsonProperty(value = "problem") + List problemList +) { +} diff --git a/src/main/java/sopt/org/HMH/domain/user/dto/request/SocialLoginRequest.java b/src/main/java/sopt/org/HMH/domain/user/dto/request/SocialPlatformRequest.java similarity index 79% rename from src/main/java/sopt/org/HMH/domain/user/dto/request/SocialLoginRequest.java rename to src/main/java/sopt/org/HMH/domain/user/dto/request/SocialPlatformRequest.java index c40e02a3..894b945d 100644 --- a/src/main/java/sopt/org/HMH/domain/user/dto/request/SocialLoginRequest.java +++ b/src/main/java/sopt/org/HMH/domain/user/dto/request/SocialPlatformRequest.java @@ -2,7 +2,7 @@ import sopt.org.HMH.global.auth.social.SocialPlatform; -public record SocialLoginRequest( +public record SocialPlatformRequest( SocialPlatform socialPlatform ) { } \ No newline at end of file diff --git a/src/main/java/sopt/org/HMH/domain/user/dto/request/SocialSignUpRequest.java b/src/main/java/sopt/org/HMH/domain/user/dto/request/SocialSignUpRequest.java new file mode 100644 index 00000000..c88fb423 --- /dev/null +++ b/src/main/java/sopt/org/HMH/domain/user/dto/request/SocialSignUpRequest.java @@ -0,0 +1,16 @@ +package sopt.org.HMH.domain.user.dto.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import sopt.org.HMH.domain.challenge.dto.request.ChallengeRequest; +import sopt.org.HMH.global.auth.social.SocialPlatform; + +public record SocialSignUpRequest( + SocialPlatform socialPlatform, + + @JsonProperty(value = "onboarding") + OnboardingRequest onboardingRequest, + + @JsonProperty(value = "challenge") + ChallengeRequest challengeRequest +) { +} \ No newline at end of file diff --git a/src/main/java/sopt/org/HMH/domain/user/repository/OnboardingInfoRepository.java b/src/main/java/sopt/org/HMH/domain/user/repository/OnboardingInfoRepository.java new file mode 100644 index 00000000..f5018785 --- /dev/null +++ b/src/main/java/sopt/org/HMH/domain/user/repository/OnboardingInfoRepository.java @@ -0,0 +1,7 @@ +package sopt.org.HMH.domain.user.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import sopt.org.HMH.domain.user.domain.OnboardingInfo; + +public interface OnboardingInfoRepository extends JpaRepository { +} diff --git a/src/main/java/sopt/org/HMH/domain/user/repository/UserRepository.java b/src/main/java/sopt/org/HMH/domain/user/repository/UserRepository.java index 2fd583ec..a8b3e072 100644 --- a/src/main/java/sopt/org/HMH/domain/user/repository/UserRepository.java +++ b/src/main/java/sopt/org/HMH/domain/user/repository/UserRepository.java @@ -20,4 +20,5 @@ default User findByIdOrThrowException(Long userId) { } Optional findBySocialPlatformAndSocialId(SocialPlatform socialPlatform, Long socialId); + boolean existsBySocialPlatformAndSocialId(SocialPlatform socialPlatform, Long socialId); } \ No newline at end of file diff --git a/src/main/java/sopt/org/HMH/domain/user/service/UserService.java b/src/main/java/sopt/org/HMH/domain/user/service/UserService.java index 07cff634..d115188a 100644 --- a/src/main/java/sopt/org/HMH/domain/user/service/UserService.java +++ b/src/main/java/sopt/org/HMH/domain/user/service/UserService.java @@ -1,13 +1,19 @@ package sopt.org.HMH.domain.user.service; +import java.util.ArrayList; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import sopt.org.HMH.domain.user.domain.OnboardingInfo; +import sopt.org.HMH.domain.user.domain.OnboardingProblem; import sopt.org.HMH.domain.user.domain.User; import sopt.org.HMH.domain.user.domain.exception.UserError; import sopt.org.HMH.domain.user.domain.exception.UserException; -import sopt.org.HMH.domain.user.dto.request.SocialLoginRequest; +import sopt.org.HMH.domain.user.dto.request.SocialPlatformRequest; +import sopt.org.HMH.domain.user.dto.request.SocialSignUpRequest; import sopt.org.HMH.domain.user.dto.response.LoginResponse; +import sopt.org.HMH.domain.user.repository.OnboardingInfoRepository; import sopt.org.HMH.domain.user.repository.UserRepository; import sopt.org.HMH.global.auth.jwt.JwtProvider; import sopt.org.HMH.global.auth.jwt.TokenDto; @@ -24,28 +30,38 @@ public class UserService { private final JwtProvider jwtProvider; private final UserRepository userRepository; + private final OnboardingInfoRepository onboardingInfoRepository; private final KakaoLoginService kakaoLoginService; @Transactional - public LoginResponse login(String socialAccessToken, SocialLoginRequest request) { - socialAccessToken = parseTokenString(socialAccessToken); + public LoginResponse login(String socialAccessToken, SocialPlatformRequest request) { + SocialPlatform socialPlatform = request.socialPlatform(); - Long socialId = getUserIdBySocialAccessToken(socialPlatform, socialAccessToken); + Long socialId = getSocialIdBySocialAccessToken(socialPlatform, socialAccessToken); + // 유저를 찾지 못하면 404 Error를 던져 클라이언트에게 회원가입 api를 요구한다. - User loginUser = getUserBySocialAndSocialId(socialPlatform, socialId); + User loginUser = getUserBySocialPlatformAndSocialId(socialPlatform, socialId); - if (socialPlatform == SocialPlatform.KAKAO) { - kakaoLoginService.updateUserInfoByKakao(loginUser, socialAccessToken); - } + return performLogin(socialAccessToken, socialPlatform, loginUser); + } - TokenDto tokenDto = jwtProvider.issueToken(new UserAuthentication(loginUser.getId(), null, null)); + @Transactional + public LoginResponse signup(String socialAccessToken, SocialSignUpRequest request) { - return LoginResponse.of(loginUser, tokenDto); + SocialPlatform socialPlatform = request.socialPlatform(); + Long socialId = getSocialIdBySocialAccessToken(socialPlatform, socialAccessToken); + + // 이미 회원가입된 유저가 있다면 400 Error 발생 + validateDuplicateUser(socialId, socialPlatform); + + OnboardingInfo onboardingInfo = createOnboardingInfo(request); + User user = createUser(socialPlatform, socialId, onboardingInfo); + + return performLogin(socialAccessToken, socialPlatform, user); } @Transactional public TokenDto reissueToken(String refreshToken) { - refreshToken = parseTokenString(refreshToken); Long userId = jwtProvider.validateRefreshToken(refreshToken); validateUserId(userId); // userId가 DB에 저장된 유효한 값인지 검사 @@ -64,23 +80,69 @@ private void validateUserId(Long userId) { } } - private User getUserBySocialAndSocialId(SocialPlatform socialPlatform, Long socialId) { + private User getUserBySocialPlatformAndSocialId(SocialPlatform socialPlatform, Long socialId) { return userRepository.findBySocialPlatformAndSocialIdOrThrowException(socialPlatform, socialId); } - private Long getUserIdBySocialAccessToken(SocialPlatform socialPlatform, String socialAccessToken) { + private Long getSocialIdBySocialAccessToken(SocialPlatform socialPlatform, String socialAccessToken) { return switch (socialPlatform.toString()) { - case "KAKAO" -> kakaoLoginService.getUserIdByKakao(socialAccessToken); + case "KAKAO" -> kakaoLoginService.getSocialIdByKakao(socialAccessToken); default -> throw new JwtException(JwtError.INVALID_SOCIAL_ACCESS_TOKEN); }; } - private static String parseTokenString(String tokenString) { - String[] strings = tokenString.split(" "); - if (strings.length != 2) { + /** + * 소셜 액세스 토큰에서 "Bearer " 부분을 삭제시키고 유효한 소셜 액세스 토큰만을 받기 위한 함수 + */ + private String parseTokenString(String tokenString) { + String[] parsedTokens = tokenString.split(" "); + if (parsedTokens.length != 2) { throw new JwtException(JwtError.INVALID_TOKEN_HEADER); } - return strings[1]; + String validSocialAccessToken = parsedTokens[1]; + return validSocialAccessToken; + } + + private void validateDuplicateUser(Long socialId, SocialPlatform socialPlatform) { + if (userRepository.existsBySocialPlatformAndSocialId(socialPlatform, socialId)) { + throw new UserException(UserError.DUPLICATE_USER); + } + } + + private LoginResponse performLogin(String socialAccessToken, SocialPlatform socialPlatform, User loginUser) { + if (socialPlatform == SocialPlatform.KAKAO) { + kakaoLoginService.updateUserInfoByKakao(loginUser, socialAccessToken); + } + TokenDto tokenDto = jwtProvider.issueToken(new UserAuthentication(loginUser.getId(), null, null)); + return LoginResponse.of(loginUser, tokenDto); + } + + private User createUser(SocialPlatform socialPlatform, Long socialId, OnboardingInfo onboardingInfo) { + User user = User.builder() + .socialPlatform(socialPlatform) + .socialId(socialId) + .onboardingInfo(onboardingInfo) + .build(); + userRepository.save(user); + return user; + } + + private OnboardingInfo createOnboardingInfo(SocialSignUpRequest request) { + List problemList = new ArrayList<>(); + for (String problem : request.onboardingRequest().problemList()) { + problemList.add( + OnboardingProblem.builder() + .problem(problem) + .build() + ); + } + + OnboardingInfo onboardingInfo = OnboardingInfo.builder() + .averageUseTime(request.onboardingRequest().averageUseTime()) + .problem(problemList) + .build(); + onboardingInfoRepository.save(onboardingInfo); + return onboardingInfo; } public User getUserId(Long userId) { diff --git a/src/main/java/sopt/org/HMH/global/auth/social/kakao/fegin/KakaoApiClient.java b/src/main/java/sopt/org/HMH/global/auth/social/kakao/fegin/KakaoApiClient.java index 4c0f258d..1a7ddde9 100644 --- a/src/main/java/sopt/org/HMH/global/auth/social/kakao/fegin/KakaoApiClient.java +++ b/src/main/java/sopt/org/HMH/global/auth/social/kakao/fegin/KakaoApiClient.java @@ -4,11 +4,11 @@ import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestHeader; -import sopt.org.HMH.global.auth.social.kakao.response.KakaoUserResponse; +import sopt.org.HMH.global.auth.social.kakao.request.KakaoUserRequest; @FeignClient(name = "kakaoApiClient", url = "${oauth2.kakao.base-url}") public interface KakaoApiClient { @GetMapping(value = "/v2/user/me") - KakaoUserResponse getUserInformation(@RequestHeader(HttpHeaders.AUTHORIZATION) String accessToken); + KakaoUserRequest getUserInformation(@RequestHeader(HttpHeaders.AUTHORIZATION) String accessToken); } \ No newline at end of file diff --git a/src/main/java/sopt/org/HMH/global/auth/social/kakao/fegin/KakaoLoginService.java b/src/main/java/sopt/org/HMH/global/auth/social/kakao/fegin/KakaoLoginService.java index ed2932db..9b434d9b 100644 --- a/src/main/java/sopt/org/HMH/global/auth/social/kakao/fegin/KakaoLoginService.java +++ b/src/main/java/sopt/org/HMH/global/auth/social/kakao/fegin/KakaoLoginService.java @@ -5,7 +5,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import sopt.org.HMH.domain.user.domain.User; -import sopt.org.HMH.global.auth.social.kakao.response.KakaoUserResponse; +import sopt.org.HMH.global.auth.social.kakao.request.KakaoUserRequest; @Service @Transactional @@ -13,14 +13,13 @@ public class KakaoLoginService { private final KakaoApiClient kakaoApiClient; - private static final String TOKEN_TYPE = "Bearer "; /** - * 카카오 Acess Token으로 유저 Id 불러오는 함수 + * 카카오 Acess Token으로 유저의 소셜 Id 불러오는 함수 */ - public Long getUserIdByKakao(String socialAccessToken) { + public Long getSocialIdByKakao(String socialAccessToken) { - KakaoUserResponse userResponse = kakaoApiClient.getUserInformation(TOKEN_TYPE + socialAccessToken); + KakaoUserRequest userResponse = kakaoApiClient.getUserInformation(socialAccessToken); System.out.println("userResponse : " + userResponse); return userResponse.id(); } @@ -29,7 +28,7 @@ public Long getUserIdByKakao(String socialAccessToken) { * 카카오 Access Token으로 유저 정보 업데이트 */ public void updateUserInfoByKakao(User loginUser, String socialAccessToken) { - KakaoUserResponse userResponse = kakaoApiClient.getUserInformation(TOKEN_TYPE + socialAccessToken); + KakaoUserRequest userResponse = kakaoApiClient.getUserInformation(socialAccessToken); String nickname = userResponse.kakaoAccount().profile().nickname(); String profileImageUrl = userResponse.kakaoAccount().profile().profileImageUrl(); diff --git a/src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoAccount.java b/src/main/java/sopt/org/HMH/global/auth/social/kakao/request/KakaoAccount.java similarity index 81% rename from src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoAccount.java rename to src/main/java/sopt/org/HMH/global/auth/social/kakao/request/KakaoAccount.java index 43159f40..4524ac37 100644 --- a/src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoAccount.java +++ b/src/main/java/sopt/org/HMH/global/auth/social/kakao/request/KakaoAccount.java @@ -1,4 +1,4 @@ -package sopt.org.HMH.global.auth.social.kakao.response; +package sopt.org.HMH.global.auth.social.kakao.request; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.annotation.JsonNaming; diff --git a/src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoUserProfile.java b/src/main/java/sopt/org/HMH/global/auth/social/kakao/request/KakaoUserProfile.java similarity index 83% rename from src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoUserProfile.java rename to src/main/java/sopt/org/HMH/global/auth/social/kakao/request/KakaoUserProfile.java index c6b47f3e..71e41b80 100644 --- a/src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoUserProfile.java +++ b/src/main/java/sopt/org/HMH/global/auth/social/kakao/request/KakaoUserProfile.java @@ -1,4 +1,4 @@ -package sopt.org.HMH.global.auth.social.kakao.response; +package sopt.org.HMH.global.auth.social.kakao.request; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.annotation.JsonNaming; diff --git a/src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoUserResponse.java b/src/main/java/sopt/org/HMH/global/auth/social/kakao/request/KakaoUserRequest.java similarity index 73% rename from src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoUserResponse.java rename to src/main/java/sopt/org/HMH/global/auth/social/kakao/request/KakaoUserRequest.java index 893368c6..ad4dabc2 100644 --- a/src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoUserResponse.java +++ b/src/main/java/sopt/org/HMH/global/auth/social/kakao/request/KakaoUserRequest.java @@ -1,10 +1,10 @@ -package sopt.org.HMH.global.auth.social.kakao.response; +package sopt.org.HMH.global.auth.social.kakao.request; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.annotation.JsonNaming; @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) -public record KakaoUserResponse( +public record KakaoUserRequest( Long id, KakaoAccount kakaoAccount ) { diff --git a/src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoAccessTokenResponse.java b/src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoAccessTokenResponse.java deleted file mode 100644 index 1c836ff5..00000000 --- a/src/main/java/sopt/org/HMH/global/auth/social/kakao/response/KakaoAccessTokenResponse.java +++ /dev/null @@ -1,15 +0,0 @@ -package sopt.org.HMH.global.auth.social.kakao.response; - -import com.fasterxml.jackson.databind.PropertyNamingStrategies; -import com.fasterxml.jackson.databind.annotation.JsonNaming; - -@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) -public record KakaoAccessTokenResponse( - String accessToken, - String refreshToken -) { - - public static KakaoAccessTokenResponse of(String accessToken, String refreshToken) { - return new KakaoAccessTokenResponse(accessToken, refreshToken); - } -} \ No newline at end of file diff --git a/src/main/java/sopt/org/HMH/global/common/Util.java b/src/main/java/sopt/org/HMH/global/common/Util.java index 6121cf72..956c75fb 100644 --- a/src/main/java/sopt/org/HMH/global/common/Util.java +++ b/src/main/java/sopt/org/HMH/global/common/Util.java @@ -1,7 +1,6 @@ package sopt.org.HMH.global.common; import java.security.Principal; - import static java.util.Objects.isNull; public class Util { diff --git a/src/main/java/sopt/org/HMH/global/config/SecurityConfig.java b/src/main/java/sopt/org/HMH/global/config/SecurityConfig.java index 9ab4575b..bb49ad7a 100644 --- a/src/main/java/sopt/org/HMH/global/config/SecurityConfig.java +++ b/src/main/java/sopt/org/HMH/global/config/SecurityConfig.java @@ -33,6 +33,7 @@ public class SecurityConfig { // Authentication "/api/v1/user/login", "/api/v1/user/reissue", + "/api/v1/user/signup", }; @Bean