mirror of
https://github.com/detleph/server.git
synced 2026-09-07 23:44:40 +02:00
Rewrite parts of the requestTokenEmailController
This commit is contained in:
@@ -97,7 +97,7 @@ export const register = async (req: Request<{}, {}, CreateTeamBody>, res: Respon
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const requestToken = async (req: Request, res: Response) => {
|
export const requestToken = async (req: Request, res: Response) => {
|
||||||
const data = z.object({ teamId: z.string().min(1) }).safeParse(req);
|
const data = z.object({ teamId: z.string().min(1) }).safeParse(req.body);
|
||||||
|
|
||||||
if (data.success == false) {
|
if (data.success == false) {
|
||||||
return res.status(400).json(generateInvalidBodyError({ teamId: DataType.STRING }, data.error));
|
return res.status(400).json(generateInvalidBodyError({ teamId: DataType.STRING }, data.error));
|
||||||
@@ -130,7 +130,7 @@ export const requestToken = async (req: Request, res: Response) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const requestTokenEmail = async (req: Request, res: Response) => {
|
export const requestTokenEmail = async (req: Request, res: Response) => {
|
||||||
const data = z.object({ email: z.string().min(1) }).safeParse(req);
|
const data = z.object({ email: z.string().email() }).safeParse(req.body);
|
||||||
|
|
||||||
if (data.success == false) {
|
if (data.success == false) {
|
||||||
return res.status(400).json(generateInvalidBodyError({ email: DataType.STRING }, data.error));
|
return res.status(400).json(generateInvalidBodyError({ email: DataType.STRING }, data.error));
|
||||||
@@ -149,23 +149,24 @@ export const requestTokenEmail = async (req: Request, res: Response) => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!teams) {
|
if (teams.length <= 0) {
|
||||||
return res.status(404).json(generateError("Team does not exist!"));
|
// REVIEW: Potential for time-based attacks
|
||||||
|
return res
|
||||||
|
.status(200)
|
||||||
|
.json({ type: "sucess", payload: { message: "If a team with the provided email exist, the token was sent!" } });
|
||||||
}
|
}
|
||||||
|
|
||||||
const team = teams[0]; //REVIEW: maybe a email should be only able to be responsible for one team
|
const team = teams[0]; //REVIEW: maybe a email should be only able to be responsible for one team
|
||||||
|
|
||||||
if (!team) {
|
|
||||||
return res.status(404).json(generateError("Team does not exist!"));
|
|
||||||
}
|
|
||||||
|
|
||||||
const usid = nanoid();
|
const usid = nanoid();
|
||||||
|
|
||||||
(await mailClient).set(usid, team.pid);
|
(await mailClient).set(usid, team.pid);
|
||||||
|
|
||||||
verificationMail(team.leaderEmail, team.discipline.name, usid);
|
verificationMail(team.leaderEmail, team.discipline.name, usid);
|
||||||
|
|
||||||
res.status(200).json({ type: "sucess", payload: { message: "Email sent!" } });
|
res
|
||||||
|
.status(200)
|
||||||
|
.json({ type: "sucess", payload: { message: "If a team with the provided email exist, the token was sent!" } });
|
||||||
};
|
};
|
||||||
|
|
||||||
export const verifyEmail = async (req: Request, res: Response) => {
|
export const verifyEmail = async (req: Request, res: Response) => {
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import express from "express";
|
import express from "express";
|
||||||
import { register, requestToken, verifyEmail } from "../Controllers/user_auth.controller";
|
import { register, requestToken, requestTokenEmail, verifyEmail } from "../Controllers/user_auth.controller";
|
||||||
|
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
router.post("/", register);
|
router.post("/", register);
|
||||||
router.get("/verify/:code", verifyEmail);
|
router.get("/verify/:code", verifyEmail);
|
||||||
router.get("/token", requestToken);
|
router.get("/token", requestToken);
|
||||||
|
router.post("/email-token", requestTokenEmail);
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
|||||||
Reference in New Issue
Block a user