All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
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.
100 lines
3.0 KiB
JavaScript
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;
|