RISK IT

[TIL28_23.2.5.] [Node] pw 및 email 유효성검사 파일 utils 폴더에 추가 본문

IT/TIL

[TIL28_23.2.5.] [Node] pw 및 email 유효성검사 파일 utils 폴더에 추가

nomoremystery 2023. 2. 6. 10:38
반응형

pw 및 email 유효성검사 파일 utils 폴더에 추가

📔 작업내용

pw 및 email 유효성검사 파일 utils 폴더에 추가

🧑🏻‍💻 코드

📑 /services/userService.js

const signUp = async (name, email, password, profileImage) => {
  await validate.validatePassword(password);
  await validate.validateEmail(email);

  const [userInfo] = await userDao.getUserByEmail(email);

  if (userInfo) {
    const err = new Error('Email Already Exists.');
    err.code = 400;
    throw err;
  }

  const saltRounds = 12;
  const hashPassword = await bcrypt.hash(password, saltRounds);
  const createUser = await userDao.createUser(
    name,
    email,
    hashPassword,
    profileImage
  );

  return createUser;
};

📑 /utils/validate-user.js

const validatePassword = async (password) => {
  const pwValidation = new RegExp(
    /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@$#$%^&*\-?])[A-Za-z\d~!@$#$%^&*\-?]{8,}/
  );

  if (!pwValidation.test(password)) {
    const err = new Error('🔐 Password Is Invalid Format');
    err.code = 400;
    throw err;
  }
};

const validateEmail = async (email) => {
  const emailValidation = new RegExp(
    /^[a-zA-Z0-9+-\_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/
  );

  if (!emailValidation.test(email)) {
    const err = new Error('📧 Email Is Invalid Format');
    err.code = 400;
    throw err;
  }
};

module.exports = { validatePassword, validateEmail };
반응형