diff --git a/src/main/java/com/kusitms/jipbap/auth/AuthExceptionHandler.java b/src/main/java/com/kusitms/jipbap/auth/AuthExceptionHandler.java index 44e7287..d59c8ce 100644 --- a/src/main/java/com/kusitms/jipbap/auth/AuthExceptionHandler.java +++ b/src/main/java/com/kusitms/jipbap/auth/AuthExceptionHandler.java @@ -47,4 +47,11 @@ public CommonResponse handleJsonException(JsonException e, HttpServletRequest log.warn("Auth-005> 요청 URI: " + request.getRequestURI() + ", 에러 메세지: " + e.getMessage()); return new CommonResponse<>(ErrorCode.INTERNAL_SERVER_ERROR); } + + @ExceptionHandler(UsernameExistsException.class) + @ResponseStatus(HttpStatus.BAD_REQUEST) + public CommonResponse handleUsernameExistsException(UsernameExistsException e, HttpServletRequest request) { + log.warn("Auth-006> 요청 URI: " + request.getRequestURI() + ", 에러 메세지: " + e.getMessage()); + return new CommonResponse<>(ErrorCode.EMAIL_EXISTS_ERROR); + } } diff --git a/src/main/java/com/kusitms/jipbap/auth/AuthService.java b/src/main/java/com/kusitms/jipbap/auth/AuthService.java index e8c8cdb..4ca716d 100644 --- a/src/main/java/com/kusitms/jipbap/auth/AuthService.java +++ b/src/main/java/com/kusitms/jipbap/auth/AuthService.java @@ -53,6 +53,7 @@ public class AuthService { public void signUp(SignUpRequestDto dto) { if(userRepository.existsByEmail(dto.getEmail())) throw new EmailExistsException("이미 가입한 이메일입니다."); + if(userRepository.existsByUsername(dto.getUsername())) throw new UsernameExistsException("이미 존재하는 닉네임입니다."); userRepository.save( User.builder() .id(null) diff --git a/src/main/java/com/kusitms/jipbap/auth/exception/UsernameExistsException.java b/src/main/java/com/kusitms/jipbap/auth/exception/UsernameExistsException.java new file mode 100644 index 0000000..3848ce2 --- /dev/null +++ b/src/main/java/com/kusitms/jipbap/auth/exception/UsernameExistsException.java @@ -0,0 +1,7 @@ +package com.kusitms.jipbap.auth.exception; + +public class UsernameExistsException extends RuntimeException{ + public UsernameExistsException(String message) { + super(message); + } +} diff --git a/src/main/java/com/kusitms/jipbap/common/response/ErrorCode.java b/src/main/java/com/kusitms/jipbap/common/response/ErrorCode.java index b18f161..a1909a8 100644 --- a/src/main/java/com/kusitms/jipbap/common/response/ErrorCode.java +++ b/src/main/java/com/kusitms/jipbap/common/response/ErrorCode.java @@ -19,6 +19,7 @@ public enum ErrorCode { INVALID_PASSWORD_ERROR(false, HttpStatus.BAD_REQUEST.value(), "비밀번호를 확인해주세요. 카카오 계정이라면 카카오 로그인으로 시도해주세요."), INVALID_ACCESS_TOKEN_ERROR(false, HttpStatus.BAD_REQUEST.value(), "AccessToken 정보를 찾을 수 없습니다."), INVALID_REFRESH_TOKEN_ERROR(false, HttpStatus.BAD_REQUEST.value(), "RefreshToken 정보를 찾을 수 없습니다."), + USERNAME_EXISTS_ERROR(false, HttpStatus.BAD_REQUEST.value(), "이미 존재하는 닉네임입니다."), //user USER_NOT_FOUND_ERROR(false, HttpStatus.BAD_REQUEST.value(), "존재하지 않는 유저입니다."), diff --git a/src/main/java/com/kusitms/jipbap/user/User.java b/src/main/java/com/kusitms/jipbap/user/User.java index 56a0452..fcc8b6f 100644 --- a/src/main/java/com/kusitms/jipbap/user/User.java +++ b/src/main/java/com/kusitms/jipbap/user/User.java @@ -30,6 +30,7 @@ public class User extends DateEntity { private String password; //비밀번호 @NotBlank + @Column(unique = true) private String username; //닉네임 @NotBlank diff --git a/src/main/java/com/kusitms/jipbap/user/UserRepository.java b/src/main/java/com/kusitms/jipbap/user/UserRepository.java index 8291b94..bcef93c 100644 --- a/src/main/java/com/kusitms/jipbap/user/UserRepository.java +++ b/src/main/java/com/kusitms/jipbap/user/UserRepository.java @@ -6,5 +6,6 @@ public interface UserRepository extends JpaRepository { boolean existsByEmail(String email); + boolean existsByUsername(String username); Optional findByEmail(String email); }