프로젝트를 진행하며, 비밀번호 찾기 기능을 구현하기로 하였고,
우선은 기본적으로 비밀번호 찾기 화면에서 주어진 정보가 있다면,
해당하는 비밀번호를 고객 데이터로 저장된 메일로 보내주는 것을 구현하고자 했다.
const { users } = require('../../models');
//우리가 사용자의 데이터를 저장해두고 찾는 테이블
const nodemailer = require('nodemailer');
//nodemailer 모듈 설치
const user = process.env.findpw_mail;
const password_send = process.env.findpw_pw;
//이건 저희 개별 계정으로 연습?하거나 흠 각자의 서버에 저장된 개인 메일이나 비번을 활용하는게 좋을거 같아서 환경변수 설정함.
module.exports = {
post: (req, res, next) => {
const { useremail, githubId } = req.body;
users
.findOne({
where: {
email: useremail,
githubId: githubId,
},
})
.then((data) => {
if (!data) {
res.status(400).send('informations are not matched or have to sign up ');
} else {
const useremail = data.email;
const password = data.password;
//이건 보내는 사람의 정보를 입력하는 것(즉 서비스 제공자)
let transporter = nodemailer.createTransport({
service: 'gmail',
//지메일의 경우, 보내는 사용자의 계정이 보안수준이 낮은 접근 허용불가로 되어있으면 에러가 나는 경우가 있으므로 참고
auth: {
user: user,
pass: password_send,
},
});
//메일 보내는 실질적은 내용 구성
let mailOptions = {
from: user, //보내는 사람 메일주소
to: useremail, //받는 사람 메일주소
subject: 'S*FU Password 찾기',
html: `<p>${useremail} 계정의 임시 비밀번호는 <strong>${password}<strong>입니다.</p>`, // 메일내용
};
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
console.log(error);
next(error);
} else {
console.log('Email sent: ' + info.response);
return res.status(200).json({ success: true });
}
});
}
})
.catch((err) => {
res.status(500).send('err');
});
},
};
우와...엄청 복잡한 기능이라 생각했는데 진짜 간단했다 ㅠㅠ
모듈 만세...ㅠㅠ
이거 활용해서 엄청나게 많은 것들을 할 수 있을거 같아