Extract code for error messages for better reusability

+ Create function for generating permission errors
This commit is contained in:
Stephan
2021-12-29 15:19:18 +01:00
parent 913e0ee0e0
commit b82a84322b
+25 -19
View File
@@ -1,31 +1,37 @@
import prisma from "../lib/prisma";
import { Request, Response } from "express";
import { AdminLevel } from "@prisma/client";
const AUTH_ERROR = {
type: "failure",
payload: {
message: "The server was not able to validate your credentials; Please try again later",
},
};
const createInsufficientPermissionsError = (required: AdminLevel = "ELEVATED") => ({
type: "error",
payload: {
message: "You do not have sufficient permissions to use this feature",
required_level: required,
},
_links: [
{
rel: "authentication",
href: "/api/authentication",
type: "POST",
},
],
});
// requires: auth(elevated)
export const getAllAdmins = async (req: Request, res: Response) => {
if (!req.auth?.isAuthenticated) {
return res.status(500).json({
type: "failure",
payload: {
message: "The server was not able to validate your credentials; Please try again later",
},
});
return res.status(500).json(AUTH_ERROR);
}
if (req.auth.permission_level !== "ELEVATED") {
return res.status(403).json({
type: "error",
payload: {
message: "You do not have sufficient permissions to use this feature",
},
_links: [
{
rel: "authentication",
href: "/api/authentication",
type: "POST",
},
],
});
return res.status(403).json(createInsufficientPermissionsError());
}
// TODO: Add exception handling