✨ Feat: 닉네임 중복 확인 기능 구현#148
Conversation
- 회원가입 전 닉네임 중복 여부 확인 API 추가 - JWT 없이 호출 가능하도록 SecurityConfig permitAll 설정 - Scalar 문서에서 인증 요구가 표시되지 않도록 OpenAPI security 제외 - 닉네임 중복 확인 컨트롤러 및 서비스 테스트 추가 Closes DoDo-Project#147
There was a problem hiding this comment.
Code Review
This pull request introduces a new endpoint (/users/nickname/check) and service logic to check for nickname duplication, along with corresponding unit tests. The feedback suggests adding validation for null or blank nicknames in the service layer to prevent unnecessary database queries and ensure consistency with the documented API responses.
| public NicknameCheckResponse checkNicknameDuplication(String nickname) { | ||
| boolean duplicated = userRepository.existsByNickname(nickname); | ||
|
|
||
| return NicknameCheckResponse.toDto(nickname, duplicated); | ||
| } |
There was a problem hiding this comment.
🔍 닉네임 유효성 검증 추가 필요
현재 checkNicknameDuplication 메서드에서는 입력받은 nickname에 대한 유효성 검증(Null 및 공백 여부 등)이 누락되어 있습니다.
UserController의 OpenAPI 문서(@ApiResponse)에는 **"400 닉네임 형식이 올바르지 않습니다."**라는 응답이 정의되어 있지만, 실제 코드에서는 검증 로직이 없어 빈 문자열("")이나 공백만으로 구성된 닉네임도 그대로 DB를 조회하게 됩니다.
또한, 회원가입 시 적용되는 닉네임 형식 규칙(예: 길이 제한, 허용 문자 등)과 동일한 검증을 이 API에서도 수행해야 합니다. 그렇지 않으면 사용자가 중복 확인 시에는 "사용 가능"으로 안내받았으나, 실제 회원가입 단계에서 형식 오류로 가입이 실패하는 비일관적인 사용자 경험(UX)이 발생할 수 있습니다.
개선 사항:
nickname이null이거나 공백(isBlank())인 경우UserException(INVALID_REQUEST)을 발생시켜 안전하게 예외 처리합니다.
public NicknameCheckResponse checkNicknameDuplication(String nickname) {
if (nickname == null || nickname.isBlank()) {
throw new UserException(INVALID_REQUEST);
}
boolean duplicated = userRepository.existsByNickname(nickname);
return NicknameCheckResponse.toDto(nickname, duplicated);
}- 닉네임 공백, 길이, 허용 문자 검증 로직 추가 Closes DoDo-Project#147
📄 작업 내용 (Description)
🔗 관련 이슈 (Related Issues)
✅ 체크리스트 (Checklist)
Style)Test)📸 스크린샷 (Screenshots)
💬 기타 사항 (Etc)