Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,9 @@ public ResponseEntity<Void> redirectKakaoLoginPage(
@RequestParam String state
) {
return ResponseEntity.status(HttpStatus.FOUND)
.location(URI.create("https://kauth.kakao.com/oauth/authorize?response_type=code&client_id=%s&redirect_uri=%s&state=%s"
.formatted(kakaoClientId, redirectUri, state)))
.location(URI.create(
"https://kauth.kakao.com/oauth/authorize?response_type=code&client_id=%s&redirect_uri=%s&state=%s"
.formatted(kakaoClientId, redirectUri, state)))
.build();
}

Expand All @@ -72,8 +73,9 @@ public ResponseEntity<Void> redirectGoogleLoginPage(
) {
String scope = "openid%20profile%20email";
return ResponseEntity.status(HttpStatus.FOUND)
.location(URI.create("https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=%s&redirect_uri=%s&scope=%s&state=%s"
.formatted(googleClientId, redirectUri, scope, state)))
.location(URI.create(
"https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=%s&redirect_uri=%s&scope=%s&state=%s"
.formatted(googleClientId, redirectUri, scope, state)))
.build();
}

Expand All @@ -90,30 +92,6 @@ public ResponseEntity<MemberResponse> googleLogin(
return ResponseEntity.ok(memberResponse);
}

@PostMapping("/kakao-logout")
public ResponseEntity<Void> kakaoLogout(
@Authentication MemberAuth memberAuth,
HttpServletRequest request,
HttpServletResponse response
) {
SessionInvalidator.logout(request, response);

authService.kakaoLogout(memberAuth);
return ResponseEntity.noContent().build();
}

@DeleteMapping("/kakao-withdraw")
public ResponseEntity<Void> kakaoWithdraw(
@Authentication MemberAuth memberAuth,
HttpServletRequest request,
HttpServletResponse response
) {
SessionInvalidator.logout(request, response);

authService.withdraw(memberAuth);
return ResponseEntity.noContent().build();
}

@PostMapping("/logout")
public ResponseEntity<Void> logout(
@Authentication MemberAuth memberAuth,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public GoogleOAuthClient(
) {
this.restClient = builder
.messageConverters(converters -> {
converters.removeIf(converter -> converter instanceof MappingJackson2HttpMessageConverter);
converters.removeIf(MappingJackson2HttpMessageConverter.class::isInstance);
converters.add(new MappingJackson2HttpMessageConverter(objectMapper));
})
.build();
Expand Down Expand Up @@ -80,4 +80,4 @@ public void revokeGoogleToken(String googleId) {
// 무시: 로컬 세션 무효화는 이미 완료됨
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public KakaoOAuthClient(
) {
this.restClient = builder
.messageConverters(converters -> {
converters.removeIf(converter -> converter instanceof MappingJackson2HttpMessageConverter);
converters.removeIf(MappingJackson2HttpMessageConverter.class::isInstance);
converters.add(new MappingJackson2HttpMessageConverter(objectMapper));
})
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,14 @@ public class AuthService {

@Transactional
public MemberResponse kakaoLogin(KakaoLoginRequest kakaoLoginRequest) {
KakaoUserInfoResponse kakaoUserInfoResponse = kakaoOAuthClient.requestKakaoUserInfo(kakaoLoginRequest.code(), kakaoLoginRequest.redirectUri());
KakaoUserInfoResponse kakaoUserInfoResponse = kakaoOAuthClient.requestKakaoUserInfo(kakaoLoginRequest.code(),
kakaoLoginRequest.redirectUri());

return memberService.findBySocialLogin(SocialProvider.KAKAO, String.valueOf(kakaoUserInfoResponse.id()))
.map(MemberResponse::new)
.orElseGet(() -> {
Member member = memberService.saveSocialMember(SocialProvider.KAKAO, String.valueOf(kakaoUserInfoResponse.id()),
Member member = memberService.saveSocialMember(SocialProvider.KAKAO,
String.valueOf(kakaoUserInfoResponse.id()),
kakaoUserInfoResponse.kakaoAccount().profile().nickname());
tokenService.createTokensForNewMember(member.getId());
return new MemberResponse(member);
Expand All @@ -43,7 +45,8 @@ public MemberResponse kakaoLogin(KakaoLoginRequest kakaoLoginRequest) {

@Transactional
public MemberResponse googleLogin(GoogleLoginRequest googleLoginRequest) {
GoogleUserInfoResponse googleUserInfoResponse = googleOAuthClient.requestGoogleUserInfo(googleLoginRequest.code(), googleLoginRequest.redirectUri());
GoogleUserInfoResponse googleUserInfoResponse = googleOAuthClient.requestGoogleUserInfo(
googleLoginRequest.code(), googleLoginRequest.redirectUri());

return memberService.findBySocialLogin(SocialProvider.GOOGLE, googleUserInfoResponse.id())
.map(MemberResponse::new)
Expand Down Expand Up @@ -74,28 +77,6 @@ public void withdraw(MemberAuth memberAuth) {
memberService.withdraw(member);
}

@Transactional
public void kakaoLogout(MemberAuth memberAuth) {
Member member = memberService.readById(memberAuth.memberId());

// 카카오 소셜로그인 정보 조회하여 카카오 로그아웃
memberSocialLoginRepository.findByMember_Id(member.getId()).stream()
.filter(socialLogin -> socialLogin.getProvider() == SocialProvider.KAKAO)
.findFirst()
.ifPresent(kakaoLogin -> kakaoOAuthClient.logoutKakaoUser(Long.valueOf(kakaoLogin.getSocialId())));
}

@Transactional
public void googleLogout(MemberAuth memberAuth) {
Member member = memberService.readById(memberAuth.memberId());

// 구글 소셜로그인 정보 조회하여 구글 로그아웃
memberSocialLoginRepository.findByMember_Id(member.getId()).stream()
.filter(socialLogin -> socialLogin.getProvider() == SocialProvider.GOOGLE)
.findFirst()
.ifPresent(googleLogin -> googleOAuthClient.revokeGoogleToken(googleLogin.getSocialId()));
}

@Transactional
public void logout(MemberAuth memberAuth) {
Member member = memberService.readById(memberAuth.memberId());
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.samhap.kokomen.global.constant;

public abstract class AwsConstant {
public final class AwsConstant {

public static final String CLOUD_FRONT_DOMAIN_URL = "https://dhtg8wzvkbfxr.cloudfront.net/";

private AwsConstant() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import com.samhap.kokomen.interview.domain.InterviewState;
import com.samhap.kokomen.interview.external.dto.response.InterviewSummaryResponses;
import com.samhap.kokomen.interview.service.InterviewFacadeService;
import com.samhap.kokomen.interview.service.dto.AnswerRequest;
import com.samhap.kokomen.interview.service.dto.InterviewRequest;
import com.samhap.kokomen.interview.service.dto.InterviewResultResponse;
import com.samhap.kokomen.interview.service.dto.InterviewSummaryResponse;
Expand Down Expand Up @@ -45,18 +44,6 @@ public ResponseEntity<InterviewStartResponse> startInterview(
return ResponseEntity.ok(interviewFacadeService.startInterview(interviewRequest, memberAuth));
}

@PostMapping("/{interviewId}/questions/{curQuestionId}/answers")
public ResponseEntity<?> proceedInterview(
@PathVariable Long interviewId,
@PathVariable Long curQuestionId,
@RequestBody @Valid AnswerRequest answerRequest,
@Authentication MemberAuth memberAuth
) {
return interviewFacadeService.proceedInterview(interviewId, curQuestionId, answerRequest, memberAuth)
.map(ResponseEntity::ok)
.orElseGet(() -> ResponseEntity.noContent().build());
}

@PostMapping("/{interviewId}/like")
public ResponseEntity<Void> likeInterview(
@PathVariable Long interviewId,
Expand All @@ -66,25 +53,6 @@ public ResponseEntity<Void> likeInterview(
return ResponseEntity.noContent().build();
}

// TODO: 하나로 합치기
@PostMapping("/{interviewId}/like/kafka")
public ResponseEntity<Void> likeInterviewKafka(
@PathVariable Long interviewId,
@Authentication MemberAuth memberAuth
) {
interviewFacadeService.likeInterviewKafka(interviewId, memberAuth);
return ResponseEntity.noContent().build();
}

@PostMapping("/{interviewId}/like/kafka-v2")
public ResponseEntity<Void> likeInterviewKafkaV2(
@PathVariable Long interviewId,
@Authentication MemberAuth memberAuth
) {
interviewFacadeService.likeInterviewKafkaV2(interviewId, memberAuth);
return ResponseEntity.noContent().build();
}

@GetMapping("/{interviewId}/check")
public ResponseEntity<InterviewCheckResponse> checkInterview(
@PathVariable Long interviewId,
Expand Down Expand Up @@ -126,7 +94,8 @@ public ResponseEntity<InterviewResultResponse> findOtherMemberInterviewResult(
@Authentication(required = false) MemberAuth memberAuth,
ClientIp clientIp
) {
return ResponseEntity.ok(interviewFacadeService.findOtherMemberInterviewResult(interviewId, memberAuth, clientIp));
return ResponseEntity.ok(
interviewFacadeService.findOtherMemberInterviewResult(interviewId, memberAuth, clientIp));
}

@DeleteMapping("/{interviewId}/like")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
import com.samhap.kokomen.interview.domain.ResumeQuestionGenerationState;
import com.samhap.kokomen.interview.service.InterviewFacadeService;
import com.samhap.kokomen.interview.service.ResumeBasedInterviewService;
import com.samhap.kokomen.interview.service.dto.GeneratedQuestionsResponse;
import com.samhap.kokomen.interview.service.dto.QuestionGenerationStateResponse;
import com.samhap.kokomen.interview.service.dto.QuestionGenerationSubmitResponse;
import com.samhap.kokomen.interview.service.dto.ResumeBasedInterviewStartRequest;
import com.samhap.kokomen.interview.service.dto.ResumeBasedQuestionGenerateRequest;
import com.samhap.kokomen.interview.service.dto.ResumeQuestionGenerationPageResponse;
import com.samhap.kokomen.interview.service.dto.ResumeQuestionUsageStatusResponse;
import com.samhap.kokomen.interview.service.dto.resumebased.GeneratedQuestionsResponse;
import com.samhap.kokomen.interview.service.dto.resumebased.QuestionGenerationStateResponse;
import com.samhap.kokomen.interview.service.dto.resumebased.QuestionGenerationSubmitResponse;
import com.samhap.kokomen.interview.service.dto.resumebased.ResumeBasedInterviewStartRequest;
import com.samhap.kokomen.interview.service.dto.resumebased.ResumeBasedQuestionGenerateRequest;
import com.samhap.kokomen.interview.service.dto.resumebased.ResumeQuestionGenerationPageResponse;
import com.samhap.kokomen.interview.service.dto.resumebased.ResumeQuestionUsageStatusResponse;
import com.samhap.kokomen.interview.service.dto.start.InterviewStartResponse;
import jakarta.validation.Valid;
import java.util.List;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public SupertoneResponse request(SupertoneRequest supertoneRequest) {

return new SupertoneResponse(voiceData);
} catch (RestClientResponseException e) {
throw new ExternalApiException("Supertone API 서버로부터 오류 응답을 받았습니다. 상태 코드: " + e.getRawStatusCode(), e);
throw new ExternalApiException("Supertone API 서버로부터 오류 응답을 받았습니다. 상태 코드: " + e.getStatusCode(), e);
} catch (Exception e) {
throw new ExternalApiException("Supertone API 호출 중 예상치 못한 오류가 발생했습니다.", e);
}
Expand All @@ -53,7 +53,7 @@ public SupertoneResponse requestWithApiKey(SupertoneRequest supertoneRequest, St

return new SupertoneResponse(voiceData);
} catch (RestClientResponseException e) {
throw new ExternalApiException("Supertone API 서버로부터 오류 응답을 받았습니다. 상태 코드: " + e.getRawStatusCode(), e);
throw new ExternalApiException("Supertone API 서버로부터 오류 응답을 받았습니다. 상태 코드: " + e.getStatusCode(), e);
} catch (Exception e) {
throw new ExternalApiException("Supertone API 호출 중 예상치 못한 오류가 발생했습니다.", e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public SupertoneClientBuilder(
.baseUrl(SUPERTONE_API_URL)
.defaultHeader("x-sup-api-key", supertoneApiToken)
.messageConverters(converters -> {
converters.removeIf(converter -> converter instanceof MappingJackson2HttpMessageConverter);
converters.removeIf(MappingJackson2HttpMessageConverter.class::isInstance);
converters.add(new MappingJackson2HttpMessageConverter(objectMapper));
});
}
Expand Down
Loading