Refactor the endpoints to share common code

This commit is contained in:
Stephan
2022-04-28 12:49:07 +02:00
committed by Stefan-5422
parent 0fb8a9ca73
commit 5418d7b790
2 changed files with 9 additions and 19 deletions
+7 -13
View File
@@ -87,19 +87,13 @@ export const createAdmin = async (req: Request<{}, {}, CreateAdminBody>, res: Re
if (
!(typeof name === "string" && typeof password == "string" && isPermissionLevel(permission_level) && groupsIsValid)
) {
return res.status(400).json({
type: "error",
payload: {
message: "The body of your request did not conform to the requirements",
schema: {
body: {
name: "string",
password_level: "string",
permission_level: "'STANDARD' | 'ELEVATED'",
},
},
},
});
return res.status(400).json(
generateInvalidBodyError({
name: DataType.STRING,
password: DataType.STRING,
permission_level: DataType.PERMISSION_LEVEL,
})
);
}
const password_hash = await argon2.hash(password, { type: argon2.argon2id });
+2 -6
View File
@@ -4,6 +4,7 @@ import { authClient } from "../lib/redis";
import prisma from "../lib/prisma";
import argon2 from "argon2";
import jwt from "jsonwebtoken";
import { DataType, generateInvalidBodyError } from "./common";
const JWT_SECRET = process.env.JWT_SECRET || "secret";
const TOKEN_EXPIRY = "4 days";
@@ -39,12 +40,7 @@ export const authenticateUser = async (req: Request<{}, {}, AuthenticateUserBody
const { name, password } = req.body || {};
if (name == null || password == null) {
return res.status(400).json({
type: "error",
payload: {
message: "The body must contain 'name' and 'password' attributes of type string",
},
});
return res.status(400).json(generateInvalidBodyError({ name: DataType.STRING, password: DataType.STRING }));
}
const user = await prisma.admin.findFirst({ where: { name }, include: { groups: true } });