사용자의 ID(아이디)와 PW(비밀번호)를 검증하기 위한 조건을 정규식으로 설정하고, 해당 조건을 기반으로 입력받은 ID와 PW의 유효성을 검사한다.
private static final Pattern USERNAME_PATTERN = Pattern.compile("^[a-z0-9]{4,10}$");
private static final Pattern PASSWORD_PATTERN = Pattern.compile("^[a-zA-Z0-9]{8,15}$");
public static boolean isValidUsername(String username) {
return USERNAME_PATTERN.matcher(username).matches();
}
public static boolean isValidPassword(String password) {
return PASSWORD_PATTERN.matcher(password).matches();
}
public void signup(UserDto requestDto) {
String username = requestDto.getUsername();
String password = requestDto.getPassword();
if (!isValidPassword(password))
throw new IllegalArgumentException("PW 형태가 부적절합니다.");
else
password = passwordEncoder.encode(password);
if (!isValidUsername(username))
throw new IllegalArgumentException("ID 형태가 부적절합니다.");
// 회원 중복 확인
Optional<User> checkUsername = userRepository.findByUsername(username); // 쿼리 메서드 사용
if (checkUsername.isPresent()) {
throw new IllegalArgumentException("중복된 사용자가 존재합니다.");
}
User user = new User(username, password);
userRepository.save(user);
System.out.println("=======");
}