From 6c1e117cb57834821cb3da04ca66f4dfaa7eeac3 Mon Sep 17 00:00:00 2001 From: Alex Yang <32620988+DatProJack@users.noreply.github.com> Date: Thu, 12 Sep 2024 22:22:43 -0500 Subject: [PATCH 1/3] post checkin/main --- src/services/checkin/checkin-router.ts | 39 ++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/services/checkin/checkin-router.ts b/src/services/checkin/checkin-router.ts index d7138b7..5af97f7 100644 --- a/src/services/checkin/checkin-router.ts +++ b/src/services/checkin/checkin-router.ts @@ -5,6 +5,7 @@ import RoleChecker from "../../middleware/role-checker"; import { Role } from "../auth/auth-models"; import { validateQrHash } from "./checkin-utils"; import { checkInUserToEvent } from "./checkin-utils"; +import { Database } from "../../database"; const checkinRouter = Router(); @@ -32,4 +33,42 @@ checkinRouter.post( } ); +checkinRouter.post( + "/main", + RoleChecker([Role.Enum.ADMIN, Role.Enum.STAFF]), + async (req, res, next) => { + try { + const { qrCode } = ScanValidator.parse(req.body); + + const { userId, expTime } = validateQrHash(qrCode); + + if (Date.now() / 1000 > expTime) { + return res + .status(StatusCodes.UNAUTHORIZED) + .json({ error: "QR code has expired" }); + } + + const attendee = await Database.ATTENDEE.findOne({ userId }); + if (!attendee) { + return res + .status(StatusCodes.NOT_FOUND) + .json({ error: "UserNotFound" }); + } + if (attendee.hasCheckedIn === true) { + return res + .status(StatusCodes.BAD_REQUEST) + .json({ error: "AlreadyCheckedIn" }); + } + await Database.ATTENDEE.updateOne( + { userId: userId }, + { $set: { hasCheckedIn: true } } + ); + + return res.status(StatusCodes.OK).json(userId); + } catch (error) { + next(error); + } + } +); + export default checkinRouter; From e8a5bd9731f980be774477f16d794daac71ef945 Mon Sep 17 00:00:00 2001 From: Alex Yang <32620988+DatProJack@users.noreply.github.com> Date: Thu, 12 Sep 2024 22:24:32 -0500 Subject: [PATCH 2/3] yes --- src/services/checkin/checkin-router.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/checkin/checkin-router.ts b/src/services/checkin/checkin-router.ts index 5af97f7..8131808 100644 --- a/src/services/checkin/checkin-router.ts +++ b/src/services/checkin/checkin-router.ts @@ -34,7 +34,7 @@ checkinRouter.post( ); checkinRouter.post( - "/main", + "/", RoleChecker([Role.Enum.ADMIN, Role.Enum.STAFF]), async (req, res, next) => { try { From 9b7b5b967cc1397cac571532d9305642a2bfd195 Mon Sep 17 00:00:00 2001 From: Alex Yang <32620988+DatProJack@users.noreply.github.com> Date: Thu, 12 Sep 2024 22:25:40 -0500 Subject: [PATCH 3/3] yes --- src/services/checkin/checkin-router.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/checkin/checkin-router.ts b/src/services/checkin/checkin-router.ts index 8131808..bbcfada 100644 --- a/src/services/checkin/checkin-router.ts +++ b/src/services/checkin/checkin-router.ts @@ -54,7 +54,7 @@ checkinRouter.post( .status(StatusCodes.NOT_FOUND) .json({ error: "UserNotFound" }); } - if (attendee.hasCheckedIn === true) { + if (attendee.hasCheckedIn) { return res .status(StatusCodes.BAD_REQUEST) .json({ error: "AlreadyCheckedIn" });