diff --git a/src/main/kotlin/com/psr/psr/global/config/WebSecurityConfig.kt b/src/main/kotlin/com/psr/psr/global/config/WebSecurityConfig.kt index 529a76a..3ffc8cb 100644 --- a/src/main/kotlin/com/psr/psr/global/config/WebSecurityConfig.kt +++ b/src/main/kotlin/com/psr/psr/global/config/WebSecurityConfig.kt @@ -51,6 +51,7 @@ class WebSecurityConfig( c.requestMatchers("/users/eid").permitAll() c.requestMatchers("/users/reissue").permitAll() c.requestMatchers("/users/password-reset").permitAll() + c.requestMatchers("/users/phone/*/*").permitAll() c.requestMatchers("/users/phone/*").permitAll() c.requestMatchers("/users/email/search").permitAll() c.requestMatchers("/users/password").permitAll() diff --git a/src/main/kotlin/com/psr/psr/user/controller/UserController.kt b/src/main/kotlin/com/psr/psr/user/controller/UserController.kt index cc4ecce..e8fa462 100644 --- a/src/main/kotlin/com/psr/psr/user/controller/UserController.kt +++ b/src/main/kotlin/com/psr/psr/user/controller/UserController.kt @@ -146,7 +146,7 @@ class UserController( } /** - * 휴대폰번호 유효 + * 휴대폰번호 전송 */ @PostMapping("/phone/check") fun checkValidPhone(@RequestBody @Validated validPhoneReq: ValidPhoneReq) : BaseResponse{ @@ -154,6 +154,18 @@ class UserController( return BaseResponse(BaseResponseCode.SUCCESS) } + /** + * 회원가입을 위한 휴대폰번호 전송 + */ + @PostMapping("/phone/check/signup") + fun checkValidPhoneForSignUp(@RequestBody @Validated validPhoneReq: ValidPhoneReq) : BaseResponse{ + // 이미 있는 휴대폰 번호인지 확인 + if(userService.checkDuplicatePhone(validPhoneReq.phone)) throw BaseException(BaseResponseCode.EXISTS_PHONE) + // 휴대폰 번호 전송 + userService.checkValidPhone(validPhoneReq) + return BaseResponse(BaseResponseCode.SUCCESS) + } + /** * 휴대폰 인증번호 조회 */ diff --git a/src/main/kotlin/com/psr/psr/user/repository/UserRepository.kt b/src/main/kotlin/com/psr/psr/user/repository/UserRepository.kt index df4148a..ad5ea9e 100644 --- a/src/main/kotlin/com/psr/psr/user/repository/UserRepository.kt +++ b/src/main/kotlin/com/psr/psr/user/repository/UserRepository.kt @@ -10,6 +10,7 @@ import java.util.* interface UserRepository: JpaRepository { fun findByIdAndStatus(id: Long, status: String) : User? fun existsByNicknameAndStatus(nickname: String, status: String): Boolean + fun existsByNicknameAndStatusAndIdNot(nickname: String, status: String, userId: Long) : Boolean fun existsByPhoneAndStatus(phone: String, status: String): Boolean fun existsByEmailAndStatus(nickname: String, status: String): Boolean fun findByEmailAndStatus(email:String, status: String): Optional diff --git a/src/main/kotlin/com/psr/psr/user/service/UserService.kt b/src/main/kotlin/com/psr/psr/user/service/UserService.kt index 0242332..0e8df25 100644 --- a/src/main/kotlin/com/psr/psr/user/service/UserService.kt +++ b/src/main/kotlin/com/psr/psr/user/service/UserService.kt @@ -123,6 +123,11 @@ class UserService( return userRepository.existsByNicknameAndStatus(nickname, ACTIVE_STATUS) } + // 휴대폰번호 중복체크 + fun checkDuplicatePhone(phone: String): Boolean{ + return userRepository.existsByPhoneAndStatus(phone, ACTIVE_STATUS) + } + // token 생성 extract method private fun createToken(user: User, password: String): TokenDto { val authenticationToken = UsernamePasswordAuthenticationToken(user.id.toString(), password) @@ -140,8 +145,7 @@ class UserService( fun patchProfile(user: User, profileReq: ProfileReq) { // 닉네임이 변경이 되었으면 if(user.nickname != profileReq.nickname) { - // todo: 코드 변경 필요 -> 자기 자신 닉네임 제외 - if(userRepository.existsByNicknameAndStatus(profileReq.nickname, ACTIVE_STATUS)) throw BaseException(EXISTS_NICKNAME) + if(userRepository.existsByNicknameAndStatusAndIdNot(profileReq.nickname, ACTIVE_STATUS, user.id!!)) throw BaseException(EXISTS_NICKNAME) user.nickname = profileReq.nickname } // 프로필 이미지가 변경이 되었으면