55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import type { RequestHandler, Response } from "express";
|
|
|
|
import * as configFunctions from "../helpers/functions.config.js";
|
|
|
|
import * as userFunctions from "../helpers/functions.user.js";
|
|
|
|
const urlPrefix = configFunctions.getProperty("reverseProxy.urlPrefix");
|
|
|
|
export const forbiddenJSON = (response: Response): Response => {
|
|
return response.status(403).json({
|
|
success: false,
|
|
message: "Forbidden"
|
|
});
|
|
};
|
|
|
|
export const adminGetHandler: RequestHandler = (request, response, next) => {
|
|
if (userFunctions.userIsAdmin(request)) {
|
|
return next();
|
|
}
|
|
|
|
return response.redirect(urlPrefix + "/dashboard/?error=accessDenied");
|
|
};
|
|
|
|
export const adminPostHandler: RequestHandler = (request, response, next) => {
|
|
if (userFunctions.userIsAdmin(request)) {
|
|
return next();
|
|
}
|
|
|
|
return response.json(forbiddenJSON);
|
|
};
|
|
|
|
export const updateGetHandler: RequestHandler = (request, response, next) => {
|
|
if (userFunctions.userCanUpdate(request)) {
|
|
return next();
|
|
}
|
|
|
|
return response.redirect(urlPrefix + "/dashboard/?error=accessDenied");
|
|
};
|
|
|
|
export const updatePostHandler: RequestHandler = (request, response, next) => {
|
|
if (userFunctions.userCanUpdate(request)) {
|
|
return next();
|
|
}
|
|
|
|
return response.json(forbiddenJSON);
|
|
};
|
|
|
|
export const apiGetHandler: RequestHandler = async (request, response, next) => {
|
|
if (await userFunctions.apiKeyIsValid(request)) {
|
|
return next();
|
|
}
|
|
|
|
return response.redirect(urlPrefix + "/login");
|
|
};
|