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

import com.kamco.cd.training.auth.BCryptSaltGenerator;
import java.util.regex.Pattern;
import org.mindrot.jbcrypt.BCrypt;

public class CommonStringUtils {

  /**
   * 영문, 숫자, 특수문자를 모두 포함하여 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 암호화 필요한 패스워드
   * @param employeeNo salt 생성에 필요한 사원번호
   * @return
   */
  public static String hashPassword(String password, String employeeNo) {
    String salt = BCryptSaltGenerator.generateSaltWithEmployeeNo(employeeNo.trim());
    return BCrypt.hashpw(password.trim(), salt);
  }
}
