diff --git a/src/main/java/com/kusitms/jipbap/auth/AuthService.java b/src/main/java/com/kusitms/jipbap/auth/AuthService.java index 4ca716d..ee568d4 100644 --- a/src/main/java/com/kusitms/jipbap/auth/AuthService.java +++ b/src/main/java/com/kusitms/jipbap/auth/AuthService.java @@ -11,6 +11,7 @@ import com.kusitms.jipbap.auth.exception.*; import com.kusitms.jipbap.security.jwt.JwtTokenProvider; import com.kusitms.jipbap.security.jwt.TokenInfo; +import com.kusitms.jipbap.user.CountryPhoneCode; import com.kusitms.jipbap.user.Role; import com.kusitms.jipbap.user.User; import com.kusitms.jipbap.user.UserRepository; @@ -60,7 +61,7 @@ public void signUp(SignUpRequestDto dto) { .email(dto.getEmail()) .password(passwordEncoder.encode(dto.getPassword())) .username(dto.getUsername()) - .address(dto.getAddress()) + .countryPhoneCode(dto.getCountryPhoneCode()) .phoneNum(dto.getPhoneNum()) .role(dto.getRole()) .refreshToken(null) @@ -151,7 +152,7 @@ public SignInResponseDto kakaoAutoSignIn(KakaoProfileDto profile) { kakaoUser.getEmail(), kakaoUser.getPassword(), kakaoUser.getUsername(), - kakaoUser.getAddress(), + CountryPhoneCode.KOREA, // 카카오 kakaoUser.getPhoneNum(), Role.USER, kakaoUser.getImage() diff --git a/src/main/java/com/kusitms/jipbap/auth/dto/SignInResponseDto.java b/src/main/java/com/kusitms/jipbap/auth/dto/SignInResponseDto.java index 67de147..eda4719 100644 --- a/src/main/java/com/kusitms/jipbap/auth/dto/SignInResponseDto.java +++ b/src/main/java/com/kusitms/jipbap/auth/dto/SignInResponseDto.java @@ -1,5 +1,6 @@ package com.kusitms.jipbap.auth.dto; +import com.kusitms.jipbap.user.CountryPhoneCode; import com.kusitms.jipbap.user.Role; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/com/kusitms/jipbap/auth/dto/SignUpRequestDto.java b/src/main/java/com/kusitms/jipbap/auth/dto/SignUpRequestDto.java index c58bf8c..8c7b70e 100644 --- a/src/main/java/com/kusitms/jipbap/auth/dto/SignUpRequestDto.java +++ b/src/main/java/com/kusitms/jipbap/auth/dto/SignUpRequestDto.java @@ -1,14 +1,14 @@ package com.kusitms.jipbap.auth.dto; +import com.kusitms.jipbap.user.CountryPhoneCode; import com.kusitms.jipbap.user.Role; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; -@Data +@Getter +@Setter @NoArgsConstructor @AllArgsConstructor public class SignUpRequestDto { @@ -20,12 +20,10 @@ public class SignUpRequestDto { @NotBlank private String username; @NotBlank - private String address; + private CountryPhoneCode countryPhoneCode; @NotBlank private String phoneNum; @NotBlank private Role role; - private String imageUrl; - } diff --git a/src/main/java/com/kusitms/jipbap/config/SpringSecurityConfig.java b/src/main/java/com/kusitms/jipbap/config/SpringSecurityConfig.java index e265e98..1a54df4 100644 --- a/src/main/java/com/kusitms/jipbap/config/SpringSecurityConfig.java +++ b/src/main/java/com/kusitms/jipbap/config/SpringSecurityConfig.java @@ -66,7 +66,8 @@ public WebSecurityCustomizer webSecurityCustomizer() { "/auth/**", "/ws/**", //ws://localhost:8080/ws/chat "/ws-stomp/**", - "/addresses/**" + "/addresses/**", + "/users/nickname" ); } } \ No newline at end of file diff --git a/src/main/java/com/kusitms/jipbap/user/CountryPhoneCode.java b/src/main/java/com/kusitms/jipbap/user/CountryPhoneCode.java new file mode 100644 index 0000000..a610c32 --- /dev/null +++ b/src/main/java/com/kusitms/jipbap/user/CountryPhoneCode.java @@ -0,0 +1,17 @@ +package com.kusitms.jipbap.user; + +public enum CountryPhoneCode { + KOREA("+82"), + USA("+1"), + CANADA("+1"); + + private String code; + + CountryPhoneCode(String code) { + this.code = code; + } + + public String getCode() { + return code; + } +} diff --git a/src/main/java/com/kusitms/jipbap/user/User.java b/src/main/java/com/kusitms/jipbap/user/User.java index c216e0b..e5cb945 100644 --- a/src/main/java/com/kusitms/jipbap/user/User.java +++ b/src/main/java/com/kusitms/jipbap/user/User.java @@ -49,6 +49,9 @@ public class User extends DateEntity { private String image; //프로필 사진 + @Enumerated(EnumType.STRING) + private CountryPhoneCode countryPhoneCode; //국가 전화번호 코드 + private String phoneNum; @Enumerated(EnumType.STRING) diff --git a/src/main/java/com/kusitms/jipbap/user/UserController.java b/src/main/java/com/kusitms/jipbap/user/UserController.java index 5c0094d..a46cfd4 100644 --- a/src/main/java/com/kusitms/jipbap/user/UserController.java +++ b/src/main/java/com/kusitms/jipbap/user/UserController.java @@ -3,9 +3,11 @@ import com.kusitms.jipbap.common.response.CommonResponse; import com.kusitms.jipbap.security.Auth; import com.kusitms.jipbap.security.AuthInfo; +import com.kusitms.jipbap.user.dto.NicknameValidateRequest; import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -22,5 +24,11 @@ public CommonResponse logout(@Auth AuthInfo authInfo) { userService.logout(authInfo.getEmail()); return new CommonResponse<>("로그아웃 성공"); } + + @Operation(summary = "닉네임 중복 여부 확인") + @PostMapping("/nickname") + public CommonResponse checkNicknameIsDuplicate(@RequestBody NicknameValidateRequest dto) { + return new CommonResponse<>(userService.checkNicknameIsDuplicate(dto.getNickname())); + } } diff --git a/src/main/java/com/kusitms/jipbap/user/UserService.java b/src/main/java/com/kusitms/jipbap/user/UserService.java index 7a5c4f2..f0fdb55 100644 --- a/src/main/java/com/kusitms/jipbap/user/UserService.java +++ b/src/main/java/com/kusitms/jipbap/user/UserService.java @@ -1,6 +1,7 @@ package com.kusitms.jipbap.user; import com.kusitms.jipbap.auth.exception.InvalidEmailException; +import com.kusitms.jipbap.auth.exception.UsernameExistsException; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,5 +20,10 @@ public void logout(String email) { User user = userRepository.findByEmail(email).orElseThrow(()->new InvalidEmailException("회원정보가 존재하지 않습니다.")); user.updateRefreshToken(null); } + + public String checkNicknameIsDuplicate(String nickname){ + if(userRepository.existsByUsername(nickname)) throw new UsernameExistsException("이미 존재하는 닉네임입니다."); + return "사용 가능한 닉네임입니다."; + } } diff --git a/src/main/java/com/kusitms/jipbap/user/dto/NicknameValidateRequest.java b/src/main/java/com/kusitms/jipbap/user/dto/NicknameValidateRequest.java new file mode 100644 index 0000000..b614d61 --- /dev/null +++ b/src/main/java/com/kusitms/jipbap/user/dto/NicknameValidateRequest.java @@ -0,0 +1,14 @@ +package com.kusitms.jipbap.user.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class NicknameValidateRequest { + private String nickname; +}