많은 사이트들이 비밀번호 변경으로 회원가입한 이메일로 임시 비밀번호를 발급한다.
본 프로젝트에서도 이러한 방법으로 비밀번호 변경 로직을 구현하였다.
구현은 간단하다.
googleapis, nodemailer라는 모듈을 통해 이메일 전송하는 코드를 작성한다.
그리고 crypto라는 모듈을 통해 난수(randomBytes) 8바이트를 생성하고 이것을 16진수로 변환한다.
이제 난수를 해당 유저 비밀번호에 UPDATE해주면 끝이다.
그 로직은 ChangeTmpPassword에서 동작한다.
userID즉 아이디는 유니크한 기본키이기 때문에 유일성을 보장받는다. 해당 userID의 비밀번호를 난수의 값으로 Update시켜준다. 이때 Bcrpyt를 사용하여 비밀번호를 암호화하였으므로 난수의 값을 Bcrpyt로 암호환 값을 저장한다.