📌 필요한 기능
학교 선택 -> 해당 학교 이메일 뒷부분(예를 들어 @korea.ac.kr) 확인 -> 일치한다면 입력한 이메일로 메일 전송 -> 인증
이런 로직으로 학교 인증을 구현하였다.
firebase를 사용하면 이메일 인증도 쉽게 구현할 수 있다.
📌 이메일 전송 코드
// 로그인 및 메일 전송
const sentEmail = await signInWithEmailAndPassword(firebaseAuth, email, password)
.then(() => {
sendEmailVerification(firebaseAuth.currentUser);
return { err: false };
})
.catch((e) => {
console.log(e);
return { err: true, error: e };
});
if (sentEmail.err) {
return res
.status(statusCode.INTERNAL_SERVER_ERROR)
.send(util.fail(statusCode.INTERNAL_SERVER_ERROR,
responseMessage.SEND_VERIFICATION_EMAIL_FAIL));
}
📌 인증 여부 확인 코드
const userFirebase = await signInWithEmailAndPassword(firebaseAuth, email, password)
.then((user) => user)
.catch((e) => {
console.log(e);
return { err: true, error: e };
});
...
const {
user: { uid: firebaseId, emailVerified: isEmailVerified },
} = userFirebase;
// const firebaseId = userFirebase.user.uid;
// const isEmailVerified = userFirebase.user.emailVerified; 와 동일
if(!isEmailVerfied) {
// 이메일 인증이 되지 않은 유저에 대한 처리
}
인증 여부는 로그인 정보의 emailVerifed를 가지고 처리해주었다.
📌 이메일 전송에서 어려웠던 점
serverless 환경이 아니라 서버측에서 이메일 인증을 구현하였기 때문에 해당 유저가 로그인이 되어있는지 알 수 없다.
따라서 로그인을 시키고 이메일을 전송해야 한다.
signInWithEmailAndPassword로 로그인을 시키고 그 이후 sendEmailVerification을 사용하여 인증 메일을 보낸다.
'Programming > Node.js' 카테고리의 다른 글
[Nodejs] Express 구조 뜯어보기 (0) | 2022.04.05 |
---|---|
[Nodejs] express를 이용한 서버 구축 (0) | 2022.03.31 |
[Nodejs] firebase FCM을 이용한 pushAlarm 서버 구현 - 소리 설정 (5) | 2022.02.04 |
[Nodejs] firebase FCM을 이용한 pushAlarm 서버 구현 (0) | 2022.01.21 |