Skip to content

Commit

Permalink
Fixed additional comments
Browse files Browse the repository at this point in the history
Patle1234 committed Jul 28, 2024
1 parent 92fa89a commit 363ddcf
Showing 6 changed files with 46 additions and 27 deletions.
6 changes: 5 additions & 1 deletion src/database.ts
Original file line number Diff line number Diff line change
@@ -101,7 +101,11 @@ export const Database = {
NotificationsSchema,
NotificationsValidator
),
AUTH_CODES: initializeModel("auth_codes", SponsorAuthSchema, SponsorAuthValidator),
AUTH_CODES: initializeModel(
"auth_codes",
SponsorAuthSchema,
SponsorAuthValidator
),
SPEAKERS: initializeModel("speakers", SpeakerSchema, SpeakerValidator),
CORPORATE: initializeModel(
"corporate",
4 changes: 2 additions & 2 deletions src/services/auth/auth-router.ts
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ import RoleChecker from "../../middleware/role-checker";
import { Role } from "../auth/auth-models";
import { AuthRoleChangeRequest } from "./auth-schema";
import { z } from "zod";
import sponsorRouter from "./sponsor/sponsor-router";
import authSponsorRouter from "./sponsor/sponsor-router";

const authStrategies: Record<string, GoogleStrategy> = {};

@@ -20,7 +20,7 @@ for (const key in DeviceRedirects) {

const authRouter = Router();

authRouter.use("/sponsor", sponsorRouter);
authRouter.use("/sponsor", authSponsorRouter);

// Remove role from userId by email address (admin only endpoint)
authRouter.delete(
6 changes: 0 additions & 6 deletions src/services/auth/auth-utils.ts
Original file line number Diff line number Diff line change
@@ -59,9 +59,3 @@ export function isStaff(payload?: JwtPayloadType) {
export function isAdmin(payload?: JwtPayloadType) {
return payload?.roles.includes(Role.Enum.ADMIN);
}

export async function sponsorExists(email: string) {
const response = await Database.CORPORATE.findOne({ email: email });
if (!response) return false;
return true;
}
45 changes: 30 additions & 15 deletions src/services/auth/sponsor/sponsor-router.ts
Original file line number Diff line number Diff line change
@@ -4,15 +4,26 @@ import { StatusCodes } from "http-status-codes";
import { sendEmail } from "../../ses/ses-utils";
import jsonwebtoken from "jsonwebtoken";
import { Config } from "../../../config";
import { createSixDigitCode, encryptSixDigitCode} from "./sponsor-utils";
import {
createSixDigitCode,
encryptSixDigitCode,
sponsorExists,
} from "./sponsor-utils";
import * as bcrypt from "bcrypt";
import {AuthSponsorLoginValidator, AuthSponsorVerifyValidator} from "./sponsor-schema";
import {
AuthSponsorLoginValidator,
AuthSponsorVerifyValidator,
} from "./sponsor-schema";

const sponsorRouter = Router();
const authSponsorRouter = Router();

sponsorRouter.post("/login", async (req, res, next) => {
authSponsorRouter.post("/login", async (req, res, next) => {
try {
const { email } = AuthSponsorLoginValidator.parse(req.body);
if (!sponsorExists(email)) {
return res.sendStatus(StatusCodes.UNAUTHORIZED);
}

const sixDigitCode = createSixDigitCode();
const expTime = Math.floor(Date.now() / 1000) + 300;
const hashedVerificationCode = encryptSixDigitCode(sixDigitCode);
@@ -35,23 +46,26 @@ sponsorRouter.post("/login", async (req, res, next) => {
}
});

sponsorRouter.post("/verify", async (req, res, next) => {
authSponsorRouter.post("/verify", async (req, res, next) => {
try {
const { email, sixDigitCode } = AuthSponsorVerifyValidator.parse(req.body);
const sponsorData = await Database.AUTH_CODES.findOneAndDelete({ email });
const { email, sixDigitCode } = AuthSponsorVerifyValidator.parse(
req.body
);
const sponsorData = await Database.AUTH_CODES.findOneAndDelete({
email,
});
if (!sponsorData) {
return res.sendStatus(StatusCodes.UNAUTHORIZED);
}
const { hashedVerificationCode, expTime } = sponsorData;
if (Math.floor(Date.now() / 1000) > expTime) {
if (Math.floor(Date.now() / 1000) > sponsorData.expTime) {
return res.sendStatus(StatusCodes.GONE);
}
const match = await bcrypt.compareSync(
const match = bcrypt.compareSync(
sixDigitCode,
hashedVerificationCode
sponsorData.hashedVerificationCode
);
if (!match) {
return res.sendStatus(StatusCodes.BAD_REQUEST);
return res.sendStatus(StatusCodes.UNAUTHORIZED);
}
const token = jsonwebtoken.sign(
{
@@ -60,13 +74,14 @@ sponsorRouter.post("/verify", async (req, res, next) => {
},
Config.JWT_SIGNING_SECRET,
{
expiresIn: (Math.floor(Date.now() / 1000)) + Config.JWT_EXPIRATION_TIME
expiresIn:
Math.floor(Date.now() / 1000) + Config.JWT_EXPIRATION_TIME,
}
);
res.json({ token });
return res.status(StatusCodes.OK).json({ token });
} catch (error) {
next(error);
}
});

export default sponsorRouter;
export default authSponsorRouter;
4 changes: 2 additions & 2 deletions src/services/auth/sponsor/sponsor-schema.ts
Original file line number Diff line number Diff line change
@@ -19,5 +19,5 @@ export const AuthSponsorLoginValidator = z.object({

export const AuthSponsorVerifyValidator = z.object({
email: z.string().email(),
sixDigitCode: z.string().length(6)
});
sixDigitCode: z.string().length(6),
});
8 changes: 7 additions & 1 deletion src/services/auth/sponsor/sponsor-utils.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as bcrypt from "bcrypt";

import { Database } from "../../../database";

export function createSixDigitCode() {
let result = "";
@@ -21,3 +21,9 @@ export function encryptSixDigitCode(sixDigitCode: string): string {
throw err;
}
}

export async function sponsorExists(email: string) {
const response = await Database.CORPORATE.findOne({ email: email });
if (!response) return false;
return true;
}

0 comments on commit 363ddcf

Please sign in to comment.