farmcontrol-api/src/routes/management/permissionsettings.js
Tom Butcher 806a32d306
All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
Add permission settings management functionality
This commit introduces a new feature for managing permission settings within the application. It includes the creation of a new `permissions.js` file for handling permission logic, a corresponding Mongoose schema for permission settings, and route handlers for CRUD operations on permission settings. Additionally, tests have been added to ensure the functionality of the new permission settings service. This enhancement improves the application's capability to manage user permissions effectively.
2026-08-20 12:28:04 +01:00

100 lines
3.0 KiB
JavaScript

import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = ['name', 'createdAt', 'updatedAt', '_reference'];
const listAllowedSorters = ['name', 'createdAt', '_id', 'updatedAt'];
const propertiesAllowedFilters = ['name'];
import {
listPermissionSettingsRouteHandler,
getPermissionSettingsRouteHandler,
editPermissionSettingsRouteHandler,
newPermissionSettingsRouteHandler,
deletePermissionSettingsRouteHandler,
listPermissionSettingsByPropertiesRouteHandler,
getPermissionSettingsStatsRouteHandler,
getPermissionSettingsHistoryRouteHandler,
searchPermissionSettingsRouteHandler,
getPermissionSettingsPropertyValuesRouteHandler,
getPermissionSettingsNeighborsRouteHandler,
} from '../../services/management/permissionsettings.js';
router.get('/', isAuthenticated, async (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
listPermissionSettingsRouteHandler(
req,
res,
page,
limit,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order
);
});
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
}
listPermissionSettingsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getPermissionSettingsPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchPermissionSettingsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
newPermissionSettingsRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
getPermissionSettingsStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
getPermissionSettingsHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
getPermissionSettingsNeighborsRouteHandler(
req,
res,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order,
id
);
});
router.get('/:id', isAuthenticated, async (req, res) => {
getPermissionSettingsRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, async (req, res) => {
editPermissionSettingsRouteHandler(req, res);
});
router.delete('/:id', isAuthenticated, async (req, res) => {
deletePermissionSettingsRouteHandler(req, res);
});
export default router;