package com.kamco.cd.kamcoback.common.utils;

import java.util.regex.Pattern;
import org.mindrot.jbcrypt.BCrypt;

public class CommonStringUtils {

  private static final int BCRYPT_COST = 10;

  /**
   * 영문, 숫자, 특수문자를 모두 포함하여 8~20자 이내의 비밀번호
   *
   * @param password 벨리데이션 필요한 패스워드
   * @return
   */
  public static boolean isValidPassword(String password) {
    String passwordPattern =
        "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[!@#$%^&*()_+\\-\\[\\]{};':\"\\\\|,.<>/?=]).{8,20}$";
    return Pattern.matches(passwordPattern, password);
  }

  /**
   * 패스워드 암호화
   *
   * @param password 암호화 필요한 패스워드
   * @return
   */
  public static String hashPassword(String password) {
    if (password == null) {
      throw new IllegalArgumentException("password must not be null");
    }
    return BCrypt.hashpw(password.trim(), BCrypt.gensalt(BCRYPT_COST));
  }
}
