base router and permissions

This commit is contained in:
Julian Krauser 2025-05-29 10:52:05 +02:00
parent 7883bb7d7f
commit 0684605093
11 changed files with 196 additions and 12 deletions

View file

@ -2,6 +2,7 @@ import express from "express";
import PermissionHelper from "../../helpers/permissionHelper";
import preventWebapiAccess from "../../middleware/preventWebApiAccess";
/** configuration */
import award from "./configuration/award";
import communicationType from "./configuration/communicationType";
import executivePosition from "./configuration/executivePosition";
@ -14,6 +15,7 @@ import template from "./configuration/template";
import templateUsage from "./configuration/templateUsage";
import newsletterConfig from "./configuration/newsletterConfig";
/** club */
import member from "./club/member";
import protocol from "./club/protocol";
import calendar from "./club/calendar";
@ -21,6 +23,7 @@ import queryBuilder from "./club/queryBuilder";
import newsletter from "./club/newsletter";
import listprint from "./club/listprint";
/** management */
import role from "./management/role";
import user from "./management/user";
import invite from "./management/invite";
@ -28,8 +31,19 @@ import api from "./management/webapi";
import backup from "./management/backup";
import setting from "./management/setting";
/** unit */
import equipment from "./unit/equipment";
import equipmentType from "./unit/equipmentType";
import vehicle from "./unit/vehicle";
import vehicleType from "./unit/vehicleType";
import wearable from "./unit/wearable";
import wearableType from "./unit/wearableType";
import inspection from "./unit/inspection";
import inspectionPlan from "./unit/inspectionPlan";
var router = express.Router({ mergeParams: true });
/** configuration */
router.use(
"/award",
PermissionHelper.passCheckSomeMiddleware([
@ -112,6 +126,7 @@ router.use(
newsletterConfig
);
/** club */
router.use("/member", PermissionHelper.passCheckMiddleware("read", "club", "member"), member);
router.use(
"/protocol",
@ -143,6 +158,7 @@ router.use(
);
router.use("/listprint", PermissionHelper.passCheckMiddleware("read", "club", "listprint"), listprint);
/** management */
router.use("/role", PermissionHelper.passCheckMiddleware("read", "management", "role"), role);
router.use(
"/user",
@ -162,4 +178,42 @@ router.use(
);
router.use("/setting", PermissionHelper.passCheckMiddleware("read", "management", "setting"), setting);
/** unit */
router.use("/equipment", PermissionHelper.passCheckMiddleware("read", "unit", "equipment"), equipment);
router.use(
"/equipmenttype",
PermissionHelper.passCheckSomeMiddleware([
{ requiredPermission: "read", section: "unit", module: "equipment_type" },
{ requiredPermission: "read", section: "unit", module: "equipment" },
]),
equipmentType
);
router.use("/vehicle", PermissionHelper.passCheckMiddleware("read", "unit", "vehicle"), vehicle);
router.use(
"/vehicletype",
PermissionHelper.passCheckSomeMiddleware([
{ requiredPermission: "read", section: "unit", module: "vehicle_type" },
{ requiredPermission: "read", section: "unit", module: "vehicle" },
]),
vehicleType
);
router.use("/wearable", PermissionHelper.passCheckMiddleware("read", "unit", "wearable"), wearable);
router.use(
"/wearabletype",
PermissionHelper.passCheckSomeMiddleware([
{ requiredPermission: "read", section: "unit", module: "wearable_type" },
{ requiredPermission: "read", section: "unit", module: "wearable" },
]),
wearableType
);
router.use("/inspection", PermissionHelper.passCheckMiddleware("read", "unit", "inspection"), inspection);
router.use(
"/inspectionplan",
PermissionHelper.passCheckSomeMiddleware([
{ requiredPermission: "read", section: "unit", module: "inspection_plan" },
{ requiredPermission: "read", section: "unit", module: "inspection" },
]),
inspectionPlan
);
export default router;

View file

@ -0,0 +1,10 @@
import express, { Request, Response } from "express";
import PermissionHelper from "../../../helpers/permissionHelper";
var router = express.Router({ mergeParams: true });
router.get("/", async (req: Request, res: Response) => {
res.send("TODO");
});
export default router;

View file

@ -0,0 +1,10 @@
import express, { Request, Response } from "express";
import PermissionHelper from "../../../helpers/permissionHelper";
var router = express.Router({ mergeParams: true });
router.get("/", async (req: Request, res: Response) => {
res.send("TODO");
});
export default router;

View file

@ -0,0 +1,10 @@
import express, { Request, Response } from "express";
import PermissionHelper from "../../../helpers/permissionHelper";
var router = express.Router({ mergeParams: true });
router.get("/", async (req: Request, res: Response) => {
res.send("TODO");
});
export default router;

View file

@ -0,0 +1,10 @@
import express, { Request, Response } from "express";
import PermissionHelper from "../../../helpers/permissionHelper";
var router = express.Router({ mergeParams: true });
router.get("/", async (req: Request, res: Response) => {
res.send("TODO");
});
export default router;

View file

@ -0,0 +1,10 @@
import express, { Request, Response } from "express";
import PermissionHelper from "../../../helpers/permissionHelper";
var router = express.Router({ mergeParams: true });
router.get("/", async (req: Request, res: Response) => {
res.send("TODO");
});
export default router;

View file

@ -0,0 +1,10 @@
import express, { Request, Response } from "express";
import PermissionHelper from "../../../helpers/permissionHelper";
var router = express.Router({ mergeParams: true });
router.get("/", async (req: Request, res: Response) => {
res.send("TODO");
});
export default router;

View file

@ -0,0 +1,10 @@
import express, { Request, Response } from "express";
import PermissionHelper from "../../../helpers/permissionHelper";
var router = express.Router({ mergeParams: true });
router.get("/", async (req: Request, res: Response) => {
res.send("TODO");
});
export default router;

View file

@ -0,0 +1,10 @@
import express, { Request, Response } from "express";
import PermissionHelper from "../../../helpers/permissionHelper";
var router = express.Router({ mergeParams: true });
router.get("/", async (req: Request, res: Response) => {
res.send("TODO");
});
export default router;

View file

@ -14,6 +14,10 @@ router.get("/calendar", async (req, res) => {
await getCalendarItemsByTypes(req, res);
});
router.post("/reportdamage", async (req, res) => {
res.send("TODO");
});
router.get("/configuration", async (req, res) => {
await getApplicationConfig(req, res);
});

View file

@ -1,27 +1,43 @@
export type PermissionSection = "club" | "configuration" | "management";
export type PermissionSection = "club" | "unit" | "configuration" | "management";
export type PermissionModule =
// club
| "member"
| "calendar"
| "newsletter"
| "newsletter_config"
| "protocol"
| "query"
| "listprint"
// unit
| "equipment"
| "equipment_type"
| "vehicle"
| "vehicle_type"
| "wearable"
| "wearable_type"
| "inspection"
| "inspection_plan"
| "respiratory_gear"
| "respiratory_wearer"
| "respiratory_mission"
| "damage_report"
// configuration
| "qualification"
| "award"
| "executive_position"
| "communication_type"
| "membership_status"
| "newsletter_config"
| "salutation"
| "calendar_type"
| "user"
| "role"
| "webapi"
| "query"
| "query_store"
| "template"
| "template_usage"
| "backup"
// management
| "user"
| "role"
| "webapi"
| "setting";
export type PermissionType = "read" | "create" | "update" | "delete";
@ -56,34 +72,64 @@ export type SectionsAndModulesObject = {
}>;
};
export const permissionSections: Array<PermissionSection> = ["club", "configuration", "management"];
export const permissionSections: Array<PermissionSection> = ["club", "unit", "configuration", "management"];
export const permissionModules: Array<PermissionModule> = [
// club
"member",
"calendar",
"newsletter",
"newsletter_config",
"protocol",
"query",
"listprint",
// unit
"equipment",
"equipment_type",
"vehicle",
"vehicle_type",
"wearable",
"wearable_type",
"inspection",
"inspection_plan",
"respiratory_gear",
"respiratory_wearer",
"respiratory_mission",
"damage_report",
// configuration
"qualification",
"award",
"executive_position",
"communication_type",
"membership_status",
"newsletter_config",
"salutation",
"calendar_type",
"user",
"role",
"webapi",
"query",
"query_store",
"template",
"template_usage",
"backup",
// management
"user",
"role",
"webapi",
"setting",
];
export const permissionTypes: Array<PermissionType> = ["read", "create", "update", "delete"];
export const sectionsAndModules: SectionsAndModulesObject = {
club: ["member", "calendar", "newsletter", "protocol", "query", "listprint"],
unit: [
"equipment",
"equipment_type",
"vehicle",
"vehicle_type",
"wearable",
"wearable_type",
"inspection",
"inspection_plan",
"respiratory_gear",
"respiratory_wearer",
"respiratory_mission",
"damage_report",
],
configuration: [
"qualification",
"award",