Add Endpoint to verify email codes

This commit is contained in:
Stefan-5422
2022-04-25 08:57:32 +02:00
parent c96537f5b4
commit 62a5daa432
6 changed files with 95 additions and 12 deletions
+56
View File
@@ -0,0 +1,56 @@
import { Request, Response } from "express";
import prisma from "../lib/prisma";
import { mailClient } from "../lib/redis";
import { nanoid } from "nanoid";
import { verificationMail } from "../lib/mail";
export const register = async (req: Request, res: Response) => {
//TODO: Implemnt user endpoint and use following code to send verification mail
const user = {
//Supposed to come from database
id: "10",
email: "[email protected]",
};
const usid = nanoid();
(await mailClient).set(usid, user.id);
verificationMail(user.email, "eventname", usid);
//Send status code
};
export const verifyEmail = async (req: Request, res: Response) => {
const { code } = req.body || {};
if (!(typeof code === "string")) {
return res.status(400).json({
type: "error",
payload: {
message: "Invalid Request parameter",
},
});
}
const acc = await mailClient.get(code);
if (!acc) {
return res.status(404).json({
type: "error",
payload: {
message: "Invalid token. It might be expired",
},
});
}
prisma.participant.update({
where: {
id: parseInt(acc),
},
data: {
verified: true,
},
});
};
+1 -4
View File
@@ -1,6 +1,6 @@
import { writeFile } from "fs";
import Handlebars, { template } from "handlebars";
import { emailClient } from "./redis";
import { mailClient } from "./redis";
import nodemailer from "nodemailer";
import SMTPTransport from "nodemailer/lib/smtp-transport";
@@ -64,9 +64,6 @@ export const verificationMail = async (to: string, eventName: string, verificati
const compiled = message(data);
sendMail(mailAccount.user, to, "Verify Email", undefined, compiled);
//TODO: Implement verification codes
//TODO: Write endpoints to verify codes
};
export default { sendMail };
+10
View File
@@ -3,6 +3,7 @@ import { promisify } from "util";
const REDIS_INDICES = {
auth: 0,
mail: 1,
};
const REDIS_HOST = process.env.REDIS_HOST || "redis";
@@ -24,4 +25,13 @@ const auth = redis.createClient({ host: REDIS_HOST, port: REDIS_PORT });
auth.select(REDIS_INDICES.auth);
// ----------------- //
// Redis mail client //
// ----------------- //
const mail = redis.createClient({ host: REDIS_HOST, port: REDIS_PORT });
mail.select(REDIS_INDICES.mail);
export const authClient = createAsyncClient(auth);
export const mailClient = createAsyncClient(mail);