added email verification
This commit is contained in:
@@ -2,16 +2,15 @@ import { Event, User } from "@repo/db";
|
||||
import nodemailer from "nodemailer";
|
||||
import { renderCourseCompleted } from "./mail-templates/CourseCompleted";
|
||||
import { renderPasswordChanged } from "./mail-templates/PasswordChanged";
|
||||
import { renderVerificationCode } from "./mail-templates/ConfirmEmail";
|
||||
|
||||
let transporter: nodemailer.Transporter | null = null;
|
||||
|
||||
const initTransporter = () => {
|
||||
if (!process.env.MAIL_SERVER)
|
||||
return console.error("MAIL_SERVER is not defined");
|
||||
if (!process.env.MAIL_SERVER) return console.error("MAIL_SERVER is not defined");
|
||||
if (!process.env.MAIL_PORT) return console.error("MAIL_PORT is not defined");
|
||||
if (!process.env.MAIL_USER) return console.error("MAIL_USER is not defined");
|
||||
if (!process.env.MAIL_PASSWORD)
|
||||
return console.error("MAIL_PASSWORD is not defined");
|
||||
if (!process.env.MAIL_PASSWORD) return console.error("MAIL_PASSWORD is not defined");
|
||||
|
||||
transporter = nodemailer.createTransport({
|
||||
host: process.env.MAIL_SERVER,
|
||||
@@ -32,11 +31,7 @@ const initTransporter = () => {
|
||||
|
||||
initTransporter();
|
||||
|
||||
export const sendCourseCompletedEmail = async (
|
||||
to: string,
|
||||
user: User,
|
||||
event: Event,
|
||||
) => {
|
||||
export const sendCourseCompletedEmail = async (to: string, user: User, event: Event) => {
|
||||
const emailHtml = await renderCourseCompleted({ user, event });
|
||||
|
||||
if (!transporter) {
|
||||
@@ -46,16 +41,20 @@ export const sendCourseCompletedEmail = async (
|
||||
sendMail(to, `Kurs ${event.name} erfolgreich abgeschlossen`, emailHtml);
|
||||
};
|
||||
|
||||
export const sendPasswordChanged = async (
|
||||
to: string,
|
||||
user: User,
|
||||
password: string,
|
||||
) => {
|
||||
export const sendPasswordChanged = async (to: string, user: User, password: string) => {
|
||||
const emailHtml = await renderPasswordChanged({ user, password });
|
||||
|
||||
await sendMail(to, `Dein Passwort wurde geändert`, emailHtml);
|
||||
};
|
||||
|
||||
export const sendEmailVerification = async (to: string, user: User, code: string) => {
|
||||
const emailHtml = await renderVerificationCode({
|
||||
user,
|
||||
code,
|
||||
});
|
||||
await sendMail(to, "Bestätige deine E-Mail-Adresse", emailHtml);
|
||||
};
|
||||
|
||||
export const sendMail = async (to: string, subject: string, html: string) =>
|
||||
new Promise<void>(async (resolve, reject) => {
|
||||
if (!transporter) {
|
||||
|
||||
Reference in New Issue
Block a user