[TIL] 24.02.02

sssujijjl·2024년 2월 2일

[TIL]

목록 보기
30/51

[Node.js 숙련주차 개인과제 #2]

회원가입 API

const { email, password, confirmpassword, name } = req.body;

입력값을 해당하는 컬럼명에 값을 변수에 저장

  const user = await prisma.users.create({
    data: {
      email,
      password: hashedPassword,
      confirmpassword: hashedCPassword,
      name,
    },
  });

새로운 사용자 정보를 데이터베이스에 저장

const isExistUser = await prisma.users.findFirst({where: { email }});

  if (isExistUser) {
    return res.status(409).json({ message: "이미 존재하는 이메일입니다." });
  }

입력한 이메일이 데이터베이스에 있는지 찾아서 만약 있다면 error message를 return

yarn add bcrypt

const hashedPassword = await bcrypt.hash(password, 10);
const hashedCPassword = await bcrypt.hash(confirmpassword, 10);

비밀번호를 암호화하기 위해 bcrypt 설치 후, 비밀번호를 넣고, 얼마나 복잡하게 만들지 결정

  if (email.length === 0) {
    return res.status(400).json({ errorMessage: "이메일을 입력하세요." });
  } else if (name.length === 0) {
    return res.status(400).json({ errorMessage: "이름을 입력하세요." });
  }
  // 이메일 또는 비밀번호를 입력하지 않으면 error
  
  
  let com = "";
  for (let i=email.length-4; i<email.length; i++) {
    com += email[i];
  }

  if (com !== '.com') {
    return res.status(400).json({message : "이메일 형식이 틀립니다."});
  }
  // 이메일 형식을 위해서 뒤에 .com 을 붙이지 않으면 error
  
  
  if (password.length !== 6) {
    return res.status(400).json({ message: "비밀번호는 최소 6글자 이상 입력하세요." });
  }
  // 비밀번호를 6자리 이상 입력하지 않으면 error
  
  
  if (password !== confirmpassword) {
    return res.status(400).json({ message: "비밀번호가 일치하지 않습니다." });
  }
  //비밀번호와 비밀번호 확인이 맞지 않다면 error

여러가지 유효성검사를 통해 올바른 형식으로 작성할 수 있도록 해주었다.

[배운점]

brcypt를 통해 비밀번호와 비밀번호 확인을 암호화를 해서 데이터베이스에 저장을 해서
만약 유출되더라도 사용자의 정보를 보호할 수 있다.

0개의 댓글