[uber-eats] email verification - 2

한재창·2023년 6월 28일
0
post-thumbnail

email verification

MailModule

유저 인증을 하기 위해 이메일 모듈을 만듭니다. Mailgun을 사용하기 위해서는 MailModule에서 apiKey, domain, fromEmail이 필요합니다.

  1. Mailgun(https://www.mailgun.com)에 회원가입을 한 뒤 허용할 이메일을 등록합니다.

  2. mail.module.ts 파일을 만들어 준 뒤 jwt의 모듈과 비슷하게 만듭니다.

  3. MailModule에서 받을 options으로는 apiKey, domain, fromEmail이 있으므로 interface와 app.module.ts 에서 설정합니다.

  4. env에 app.module.ts에 사용할 apiKey, domain, fromEmail을 저장합니다.

  5. app.module.ts에서 Joi()를 통해 validation 합니다.

SendEmail

email을 전송하기 위한 함수를 만듭니다. Mailgun에서 이메일의 템플릿을 제공하기 때문에 Mailgun 홈페이지에서 템플릿을 커스텀한 뒤 사용할 수 있습니다.

  1. mail.service.ts 파일을 만든 뒤 MailService, 클래스를 생성합니다. 클래스를 사용하기 위해 MailModule에서 provider, export 해줍니다.

  2. app.module.ts 에서 보내주는 apiKey, domain, fromEmail을 mail.module.ts 에서 받은 뒤 mail.service.ts 파일에서 사용합니다.

  3. mail.service.ts 파일에서 이메일을 보내주는 메서드를 만듭니다. (Mailgun 홈페이지에서 Node.js 방식으로 만드는 코드 참고, npm i mailgun.js 해야함)

SendVerifiationEmail

이메일을 보내는 메서드는 private기 때문에 직접 보내줄 메서드를 만들어줍니다. 이 메서드는 user가 새로 생성될 때와 user의 profile이 업데이트 될 때 작동합니다.

  1. mail.service.ts 파일에서 이메일을 보내주는 메서드를 만듭니다.

  2. mail.module.ts 파일에서 mailService 클래스를 전역적으로 사용하도록 @Global 데코레이터를 사용합니다.

  3. users.service.ts 파일에서 user가 생성, 업데이트 될 때 verification 까지 되면 sendVerificationEmail 메서드를 실행합니다.

profile
취준 개발자

0개의 댓글