From 03a678cabe323de4dd1ea4152401708274a341af Mon Sep 17 00:00:00 2001 From: Stefan-5422 <32109571+Stefan-5422@users.noreply.github.com> Date: Sat, 2 Apr 2022 17:47:06 +0200 Subject: [PATCH] Add endpoint to verify email; --- src/controller/auth.controller.ts | 35 ++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/controller/auth.controller.ts b/src/controller/auth.controller.ts index c200ac4..3c1f9fb 100644 --- a/src/controller/auth.controller.ts +++ b/src/controller/auth.controller.ts @@ -6,6 +6,8 @@ import { createDefaultError, createDefaultSucces } from "../lib/standardResponse import argon2 from "argon2"; import jwt from "jsonwebtoken"; import { emailClient } from "../lib/redis.lib"; +import { nanoid } from "nanoid"; +import { verificationMail } from "../lib/mail"; const JWT_SECRET = process.env.jwtsecret || "secret"; @@ -71,7 +73,11 @@ export const register = async (req: Request, res: Response) => { }, }); - (await emailClient).set(name, "salty"); + const usid = nanoid(); + + (await emailClient).set(usid, user.id); + + verificationMail(name, usid); res.status(201).json(createDefaultSucces("User created succesfully", user)); }; @@ -107,3 +113,30 @@ export const authenthicate = async (req: Request, res: Response) => { req.headers.authorization = jwt.sign(userjwt, JWT_SECRET); }; + +export const verifyEmail = async (req: Request, res: Response) => { + const { code } = req.body || {}; + + if (!(typeof code === "string")) { + return res.status(400).json( + createDefaultError("Request body does not match required parameters", { + code: "string", + }) + ); + } + + const acc: number | undefined = emailClient.get(code); + + if (!acc) { + return res.status(404).json(createDefaultError("The code is invalid", {})); + } + + const user = prisma.user.update({ + where: { + id: acc, + }, + data: { + status: Status.VERIFIED, + }, + }); +};