Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

회원가입시 응답 DTO 리팩토링 및 잘못된 경로시 예외 처리 추가 #134

Merged
merged 9 commits into from
Jan 22, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,6 @@
@Configuration
public class AppConfig {

@Bean
public Random random() {
return new Random();
}
@Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
import org.springframework.web.servlet.NoHandlerFoundException;

@Slf4j
@RestControllerAdvice
Expand All @@ -42,6 +43,13 @@ public ResponseBody<Void> handleBaseException(BaseException e) {
return ResponseBody.fail(e.getMessage());
}

@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ResponseBody<Void> handleNoHandlerFoundException(NoHandlerFoundException e) {
log.error("[NoHandlerFoundException] Message = {}", e.getMessage());
return ResponseBody.fail("잘못된 URL입니다.");
}

@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(value = MethodArgumentNotValidException.class)
public ResponseBody<Void> handleValidException(MethodArgumentNotValidException e) {
Expand Down Expand Up @@ -130,7 +138,7 @@ public ResponseBody<Void> emailSendFailedException(
EmailSendFailedException e
) {
log.error("[EmailSendFailedException] Message = {}", e.getMessage());
return ResponseBody.fail(e.getMessage());
return ResponseBody.error(e.getMessage());
}

@ExceptionHandler(EmailDuplicatedException.class)
Expand All @@ -148,7 +156,7 @@ public ResponseBody<Void> jsonProcessFailedException(
JsonProcessFailedException e
) {
log.error("[JsonProcessFailedException] Message = {}", e.getMessage());
return ResponseBody.fail(e.getMessage());
return ResponseBody.error(e.getMessage());
}

@ExceptionHandler(OkHttp3RequestFailedException.class)
Expand All @@ -157,7 +165,7 @@ public ResponseBody<Void> okHttp3RequestFailedException(
OkHttp3RequestFailedException e
) {
log.error("[OkHttp3RequestFailedException] Message = {}", e.getMessage());
return ResponseBody.fail(e.getMessage());
return ResponseBody.error(e.getMessage());
}

@ExceptionHandler(FcmMessageSendFailedException.class)
Expand All @@ -166,7 +174,7 @@ public ResponseBody<Void> fcmMessageSendFailedException(
FcmMessageSendFailedException e
) {
log.error("[FcmMessageSendFailedException] Message = {}", e.getMessage());
return ResponseBody.fail(e.getMessage());
return ResponseBody.error(e.getMessage());
}

@ExceptionHandler(FcmAccessTokenGetFailedException.class)
Expand All @@ -175,7 +183,7 @@ public ResponseBody<Void> fcmAccessTokenGetFailedException(
FcmAccessTokenGetFailedException e
) {
log.error("[FcmAccessTokenGetFailedException] Message = {}", e.getMessage());
return ResponseBody.fail(e.getMessage());
return ResponseBody.error(e.getMessage());
}

@ExceptionHandler(NotMatchedProviderNameException.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import kr.co.fastcampus.yanabada.domain.auth.dto.request.SignUpRequest;
import kr.co.fastcampus.yanabada.domain.auth.dto.response.EmailAuthResponse;
import kr.co.fastcampus.yanabada.domain.auth.dto.response.LoginResponse;
import kr.co.fastcampus.yanabada.domain.auth.dto.response.SignUpResponse;
import kr.co.fastcampus.yanabada.domain.auth.service.AuthService;
import kr.co.fastcampus.yanabada.domain.member.dto.request.NickNameDuplCheckRequest;
import kr.co.fastcampus.yanabada.domain.member.dto.response.DuplCheckResponse;
Expand All @@ -35,12 +36,16 @@ public class AuthController {
private final MemberService memberService;

@PostMapping("/sign-up")
public ResponseBody<Long> signUp(@RequestBody @Valid SignUpRequest signUpRequest) {
public ResponseBody<SignUpResponse> signUp(
@RequestBody @Valid SignUpRequest signUpRequest
) {
return ResponseBody.ok(authService.signUp(signUpRequest));
}

@PostMapping("/sign-up/social")
public ResponseBody<Long> oauthSignUp(@RequestBody @Valid OauthSignUpRequest signUpRequest) {
public ResponseBody<SignUpResponse> oauthSignUp(
@RequestBody @Valid OauthSignUpRequest signUpRequest
) {
return ResponseBody.ok(authService.oauthSignUp(signUpRequest));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package kr.co.fastcampus.yanabada.domain.auth.dto.response;

import lombok.Builder;

@Builder
public record SignUpResponse(
Long memberId
) {

public static SignUpResponse from(Long id) {
return SignUpResponse.builder()
.memberId(id)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import kr.co.fastcampus.yanabada.domain.auth.dto.request.OauthSignUpRequest;
import kr.co.fastcampus.yanabada.domain.auth.dto.request.SignUpRequest;
import kr.co.fastcampus.yanabada.domain.auth.dto.response.LoginResponse;
import kr.co.fastcampus.yanabada.domain.auth.dto.response.SignUpResponse;
import kr.co.fastcampus.yanabada.domain.member.dto.response.MemberDetailResponse;
import kr.co.fastcampus.yanabada.domain.member.entity.Member;
import kr.co.fastcampus.yanabada.domain.member.entity.ProviderType;
Expand All @@ -41,21 +42,20 @@ public class AuthService {

private static final String PROFILE_AND_PNG_EXTENSION = "profile.png";
private static final int PROFILE_IMAGE_BOUND = 5;
private static final Random RANDOM = new Random();

@Value("${spring.login.oauth2-password}")
String oauthPassword;

private final MemberRepository memberRepository;
private final PasswordEncoder passwordEncoder;
private final JwtProvider jwtProvider;
private final AuthenticationManagerBuilder authenticationManagerBuilder;
private final TokenService tokenService;
private final ObjectMapper objectMapper;
private final Random random;

@Value("${spring.login.oauth2-password}")
String oauthPassword;


@Transactional
public Long signUp(SignUpRequest signUpRequest) {
public SignUpResponse signUp(SignUpRequest signUpRequest) {
if (memberRepository.existsByEmailAndProviderType(signUpRequest.email(), EMAIL)) {
throw new EmailDuplicatedException();
}
Expand All @@ -73,11 +73,11 @@ public Long signUp(SignUpRequest signUpRequest) {
.build();

Member savedMember = memberRepository.save(member);
return savedMember.getId();
return SignUpResponse.from(savedMember.getId());
}

@Transactional
public Long oauthSignUp(OauthSignUpRequest signUpRequest) {
public SignUpResponse oauthSignUp(OauthSignUpRequest signUpRequest) {

String encodedPassword = passwordEncoder.encode(oauthPassword);
Member member = Member.builder()
Expand All @@ -91,11 +91,11 @@ public Long oauthSignUp(OauthSignUpRequest signUpRequest) {
.build();

Member savedMember = memberRepository.save(member);
return savedMember.getId();
return SignUpResponse.from(savedMember.getId());
}

private String getRandomProfileImage() {
int randomNumber = random.nextInt(PROFILE_IMAGE_BOUND);
int randomNumber = RANDOM.nextInt(PROFILE_IMAGE_BOUND);
return S3ImageUrlGenerator.generate(randomNumber + PROFILE_AND_PNG_EXTENSION);
}

Expand Down
5 changes: 5 additions & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ spring:
hibernate:
show_sql: true
format_sql: true
mvc:
throw-exception-if-no-handler-found: true
web:
resources:
add-mappings: false

security:
oauth2:
Expand Down
Loading