Compare commits

..

No commits in common. "e8c9a307ab4b917fe180ed62529276a344a292f7" and "1c51766da63bd29b46a63f9f124bdb4010a2a669" have entirely different histories.

51 changed files with 344 additions and 724 deletions

View File

@ -1,32 +1,4 @@
import { jest } from '@jest/globals';
const redisMock = {
getKey: jest.fn(),
setKey: jest.fn(),
};
const lean = jest.fn();
const select = jest.fn(() => ({ lean }));
const findById = jest.fn(() => ({ select }));
const userModel = { findById };
jest.unstable_mockModule('../redis.js', () => ({
redisServer: redisMock,
}));
jest.unstable_mockModule('mongoose', () => ({
default: {
model: jest.fn(() => userModel),
},
}));
const {
applyPermissionSettingsList,
checkPermissions,
hasPermission,
getUserPermissionsCacheKey,
saveUserPermissionsToRedis,
} = await import('../permissions.js');
import { applyPermissionSettingsList } from '../permissions.js';
describe('applyPermissionSettingsList', () => {
it('applies permission settings in order and inherits intermediate values', () => {
@ -82,95 +54,3 @@ describe('applyPermissionSettingsList', () => {
});
});
});
describe('saveUserPermissionsToRedis', () => {
beforeEach(() => {
jest.clearAllMocks();
});
it('saves permissions under permissions:userID', async () => {
const permissions = { user: { info: true } };
await saveUserPermissionsToRedis('user-1', permissions);
expect(redisMock.setKey).toHaveBeenCalledWith('permissions:user-1', permissions);
});
});
describe('hasPermission', () => {
beforeEach(() => {
jest.clearAllMocks();
redisMock.getKey.mockResolvedValue(null);
redisMock.setKey.mockResolvedValue(undefined);
lean.mockResolvedValue(null);
});
it('returns true when the cached permission is allowed', async () => {
redisMock.getKey.mockResolvedValue({ printer: { edit: true } });
await expect(hasPermission({ _id: 'user-1' }, 'printer', 'edit')).resolves.toBe(true);
expect(redisMock.getKey).toHaveBeenCalledWith(getUserPermissionsCacheKey('user-1'));
expect(findById).not.toHaveBeenCalled();
});
it('returns false when the cached permission is denied or missing', async () => {
redisMock.getKey.mockResolvedValue({ printer: { edit: false } });
await expect(hasPermission('user-1', 'printer', 'edit')).resolves.toBe(false);
await expect(hasPermission('user-1', 'printer', 'delete')).resolves.toBe(false);
});
it('loads permissions from mongodb when redis is empty and caches them', async () => {
lean.mockResolvedValue({
permissions: { job: { info: true, edit: false } },
});
await expect(hasPermission('user-2', 'job', 'info')).resolves.toBe(true);
expect(findById).toHaveBeenCalledWith('user-2');
expect(select).toHaveBeenCalledWith('permissions');
expect(redisMock.setKey).toHaveBeenCalledWith('permissions:user-2', {
job: { info: true, edit: false },
});
});
it('returns false when the user or action cannot be resolved', async () => {
await expect(hasPermission(null, 'job', 'info')).resolves.toBe(false);
await expect(hasPermission('user-1', '', 'info')).resolves.toBe(false);
expect(redisMock.getKey).not.toHaveBeenCalled();
});
});
describe('checkPermissions middleware', () => {
const json = jest.fn();
const status = jest.fn(() => ({ json }));
const next = jest.fn();
const res = { status };
beforeEach(() => {
jest.clearAllMocks();
redisMock.getKey.mockResolvedValue(null);
redisMock.setKey.mockResolvedValue(undefined);
lean.mockResolvedValue(null);
});
it('calls next when the user is allowed', async () => {
redisMock.getKey.mockResolvedValue({ part: { edit: true } });
const req = { user: { _id: 'user-1' } };
await checkPermissions('part', 'edit')(req, res, next);
expect(next).toHaveBeenCalledWith();
expect(status).not.toHaveBeenCalled();
});
it('returns 403 when the user is not allowed', async () => {
redisMock.getKey.mockResolvedValue({ part: { edit: false } });
const req = { user: { _id: 'user-1' } };
await checkPermissions('part', 'edit')(req, res, next);
expect(status).toHaveBeenCalledWith(403);
expect(json).toHaveBeenCalledWith({ error: 'Forbidden', code: 'FORBIDDEN' });
expect(next).not.toHaveBeenCalled();
});
});

View File

@ -1,65 +1,4 @@
import mongoose from 'mongoose';
import { redisServer } from './redis.js';
import config from '../config.js';
import log4js from 'log4js';
const logger = log4js.getLogger('Permissions');
logger.level = config.server.logLevel;
export const getUserPermissionsCacheKey = (userId) => `permissions:${userId}`;
export const saveUserPermissionsToRedis = async (userId, permissions = {}) => {
if (!userId) {
return;
}
await redisServer.setKey(getUserPermissionsCacheKey(userId), permissions || {});
};
const getUserId = (user) => {
if (!user) return null;
if (typeof user === 'string') return user;
if (user._id) return user._id._id || user._id;
return user;
};
const loadPermissionsFromMongo = async (userId) => {
const userDoc = await mongoose.model('user').findById(userId).select('permissions').lean();
return userDoc?.permissions || {};
};
export const hasPermission = async (user, objectType, action) => {
const userId = getUserId(user);
if (!userId || !objectType || !action) {
return false;
}
logger.debug(`Checking permission: ${userId}, ${objectType}, ${action}`);
const cacheKey = getUserPermissionsCacheKey(userId);
let permissions = await redisServer.getKey(cacheKey);
if (permissions == null) {
permissions = await loadPermissionsFromMongo(userId);
await saveUserPermissionsToRedis(userId, permissions);
}
return permissions?.[objectType]?.[action] === true;
};
export const checkPermissions = (objectType, action) => async (req, res, next) => {
try {
const allowed = await hasPermission(req.user, objectType, action);
if (!allowed) {
return res.status(403).json({ error: 'Forbidden', code: 'FORBIDDEN' });
}
return next();
} catch (err) {
return next(err);
}
};
export const applyPermissionSettingsList = (settingsList = []) => {
const permissions = {};

View File

@ -4,7 +4,6 @@ import {
applyPermissionSettingsList,
resolvePermissionSettings,
resolveReferencedDocs,
saveUserPermissionsToRedis,
} from '../../permissions.js';
const { Schema } = mongoose;
@ -48,7 +47,6 @@ userSchema.statics.recalculate = async function (user, actingUser) {
if (user && typeof user === 'object' && !user._bsontype) {
user.permissions = permissions;
}
await saveUserPermissionsToRedis(userId, permissions);
const { editObject } = await import('../../database.js');
await editObject({

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions, hasPermission } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -20,15 +19,15 @@ const listAllowedFilters = [
];
const listAllowedSorters = ['createdAt', 'state', 'updatedAt', 'invoiceDate', 'dueDate'];
const propertiesAllowedFilters = [
'vendor',
'client',
'orderType',
'order',
'state.type',
'value',
'vendor._id',
'client._id',
];
'vendor',
'client',
'orderType',
'order',
'state.type',
'value',
'vendor._id',
'client._id',
];
import {
listInvoicesRouteHandler,
getInvoiceRouteHandler,
@ -44,27 +43,18 @@ import {
postInvoiceRouteHandler,
searchInvoicesRouteHandler,
getInvoicePropertyValuesRouteHandler,
getInvoiceNeighborsRouteHandler,
getInvoiceNeighborsRouteHandler
} from '../../services/finance/invoices.js';
// list of invoices
router.get('/', isAuthenticated, async (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
listInvoicesRouteHandler(
req,
res,
page,
limit,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order
);
const filter = await getFilter(req.query, listAllowedFilters);
listInvoicesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('invoice', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -74,16 +64,17 @@ router.get('/properties', checkPermissions('invoice', 'list'), isAuthenticated,
listInvoicesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('invoice', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getInvoicePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('invoice', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchInvoicesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('invoice', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newInvoiceRouteHandler(req, res);
});
@ -100,28 +91,19 @@ router.get('/history', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, async (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
getInvoiceNeighborsRouteHandler(
req,
res,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order,
id
);
getInvoiceNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('invoice', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getInvoiceRouteHandler(req, res);
});
// update multiple invoices
router.put('/', isAuthenticated, checkPermissions('invoice', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultipleInvoicesRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('invoice', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editInvoiceRouteHandler(req, res);
});
@ -129,26 +111,16 @@ router.delete('/:id', isAuthenticated, async (req, res) => {
deleteInvoiceRouteHandler(req, res);
});
router.post('/:id/post', isAuthenticated, checkPermissions('invoice', 'post'), async (req, res) => {
router.post('/:id/post', isAuthenticated, async (req, res) => {
postInvoiceRouteHandler(req, res);
});
router.post(
'/:id/acknowledge',
isAuthenticated,
checkPermissions('invoice', 'acknowledge'),
async (req, res) => {
acknowledgeInvoiceRouteHandler(req, res);
}
);
router.post('/:id/acknowledge', isAuthenticated, async (req, res) => {
acknowledgeInvoiceRouteHandler(req, res);
});
router.post(
'/:id/cancel',
isAuthenticated,
checkPermissions('invoice', 'cancel'),
async (req, res) => {
cancelInvoiceRouteHandler(req, res);
}
);
router.post('/:id/cancel', isAuthenticated, async (req, res) => {
cancelInvoiceRouteHandler(req, res);
});
export default router;

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -55,7 +54,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listPaymentsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('payment', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -65,17 +64,17 @@ router.get('/properties', checkPermissions('payment', 'list'), isAuthenticated,
listPaymentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('payment', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getPaymentPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('payment', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchPaymentsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('invoice', 'newPayment'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newPaymentRouteHandler(req, res);
});
@ -95,16 +94,16 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getPaymentNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('payment', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getPaymentRouteHandler(req, res);
});
// update multiple payments
router.put('/', isAuthenticated, checkPermissions('payment', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultiplePaymentsRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('payment', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editPaymentRouteHandler(req, res);
});
@ -112,19 +111,19 @@ router.delete('/:id', isAuthenticated, async (req, res) => {
deletePaymentRouteHandler(req, res);
});
router.post('/:id/post', isAuthenticated, checkPermissions('payment', 'post'), async (req, res) => {
router.post('/:id/post', isAuthenticated, async (req, res) => {
postPaymentRouteHandler(req, res);
});
router.post('/:id/authorise', isAuthenticated, checkPermissions('payment', 'authorise'), async (req, res) => {
router.post('/:id/authorise', isAuthenticated, async (req, res) => {
authorisePaymentRouteHandler(req, res);
});
router.post('/:id/decline', isAuthenticated, checkPermissions('payment', 'decline'), async (req, res) => {
router.post('/:id/decline', isAuthenticated, async (req, res) => {
declinePaymentRouteHandler(req, res);
});
router.post('/:id/cancel', isAuthenticated, checkPermissions('payment', 'cancel'), async (req, res) => {
router.post('/:id/cancel', isAuthenticated, async (req, res) => {
cancelPaymentRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -40,7 +39,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listTaxRecordsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('taxRecord', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -50,17 +49,17 @@ router.get('/properties', checkPermissions('taxRecord', 'list'), isAuthenticated
listTaxRecordsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('taxRecord', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getTaxRecordPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('taxRecord', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchTaxRecordsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('taxRecord', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newTaxRecordRouteHandler(req, res);
});
@ -80,11 +79,11 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getTaxRecordNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('taxRecord', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getTaxRecordRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('taxRecord', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editTaxRecordRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -50,7 +49,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listFilamentStocksRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('filamentStock', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -60,17 +59,17 @@ router.get('/properties', checkPermissions('filamentStock', 'list'), isAuthentic
listFilamentStocksByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('filamentStock', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getFilamentStockPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('filamentStock', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchFilamentStocksRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('filamentStock', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newFilamentStockRouteHandler(req, res);
});
@ -90,16 +89,16 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getFilamentStockNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('filamentStock', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getFilamentStockRouteHandler(req, res);
});
// update multiple filament stocks
router.put('/', isAuthenticated, checkPermissions('filamentStock', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultipleFilamentStocksRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('filamentStock', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editFilamentStockRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -51,20 +50,10 @@ import {
router.get('/', isAuthenticated, async (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
listOrderItemsRouteHandler(
req,
res,
page,
limit,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order
);
listOrderItemsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('orderItem', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -74,16 +63,16 @@ router.get('/properties', checkPermissions('orderItem', 'list'), isAuthenticated
listOrderItemsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('orderItem', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getOrderItemPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('orderItem', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchOrderItemsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('orderItem', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newOrderItemRouteHandler(req, res);
});
@ -100,28 +89,19 @@ router.get('/history', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, async (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
getOrderItemNeighborsRouteHandler(
req,
res,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order,
id
);
getOrderItemNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('orderItem', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getOrderItemRouteHandler(req, res);
});
// update multiple order items
router.put('/', isAuthenticated, checkPermissions('orderItem', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultipleOrderItemsRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('orderItem', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editOrderItemRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -42,7 +41,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listPartStocksRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('partStock', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -52,17 +51,17 @@ router.get('/properties', checkPermissions('partStock', 'list'), isAuthenticated
listPartStocksByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('partStock', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getPartStockPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('partStock', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchPartStocksRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('partStock', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newPartStockRouteHandler(req, res);
});
@ -82,16 +81,16 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getPartStockNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('partStock', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getPartStockRouteHandler(req, res);
});
// update multiple part stocks
router.put('/', isAuthenticated, checkPermissions('partStock', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultiplePartStocksRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('partStock', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editPartStockRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -41,7 +40,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listProductStocksRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('productStock', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -51,17 +50,17 @@ router.get('/properties', checkPermissions('productStock', 'list'), isAuthentica
listProductStocksByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('productStock', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getProductStockPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('productStock', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchProductStocksRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('productStock', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newProductStockRouteHandler(req, res);
});
@ -79,15 +78,15 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getProductStockNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('productStock', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getProductStockRouteHandler(req, res);
});
router.put('/', isAuthenticated, checkPermissions('productStock', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultipleProductStocksRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('productStock', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editProductStockRouteHandler(req, res);
});
@ -95,7 +94,7 @@ router.delete('/:id', isAuthenticated, async (req, res) => {
deleteProductStockRouteHandler(req, res);
});
router.post('/:id/post', isAuthenticated, checkPermissions('productStock', 'post'), async (req, res) => {
router.post('/:id/post', isAuthenticated, async (req, res) => {
postProductStockRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -68,7 +67,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listPurchaseOrdersRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('purchaseOrder', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -78,16 +77,16 @@ router.get('/properties', checkPermissions('purchaseOrder', 'list'), isAuthentic
listPurchaseOrdersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('purchaseOrder', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getPurchaseOrderPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('purchaseOrder', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchPurchaseOrdersRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('purchaseOrder', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newPurchaseOrderRouteHandler(req, res);
});
@ -107,16 +106,16 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getPurchaseOrderNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('purchaseOrder', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getPurchaseOrderRouteHandler(req, res);
});
// update multiple purchase orders
router.put('/', isAuthenticated, checkPermissions('purchaseOrder', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultiplePurchaseOrdersRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('purchaseOrder', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editPurchaseOrderRouteHandler(req, res);
});
@ -124,15 +123,15 @@ router.delete('/:id', isAuthenticated, async (req, res) => {
deletePurchaseOrderRouteHandler(req, res);
});
router.post('/:id/post', isAuthenticated, checkPermissions('purchaseOrder', 'post'), async (req, res) => {
router.post('/:id/post', isAuthenticated, async (req, res) => {
postPurchaseOrderRouteHandler(req, res);
});
router.post('/:id/acknowledge', isAuthenticated, checkPermissions('purchaseOrder', 'acknowledge'), async (req, res) => {
router.post('/:id/acknowledge', isAuthenticated, async (req, res) => {
acknowledgePurchaseOrderRouteHandler(req, res);
});
router.post('/:id/cancel', isAuthenticated, checkPermissions('purchaseOrder', 'cancel'), async (req, res) => {
router.post('/:id/cancel', isAuthenticated, async (req, res) => {
cancelPurchaseOrderRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -18,14 +17,7 @@ const listAllowedFilters = [
'updatedAt',
'_reference',
];
const listAllowedSorters = [
'createdAt',
'state',
'updatedAt',
'shippedAt',
'expectedAt',
'deliveredAt',
];
const listAllowedSorters = ['createdAt', 'state', 'updatedAt', 'shippedAt', 'expectedAt', 'deliveredAt'];
const propertiesAllowedFilters = [
'orderType',
'order',
@ -56,43 +48,29 @@ import {
router.get('/', isAuthenticated, async (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
listShipmentsRouteHandler(
req,
res,
page,
limit,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order
);
listShipmentsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('shipment', 'list'), isAuthenticated, async (req, res) => {
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 = await getFilter(
JSON.parse(req.query.masterFilter),
propertiesAllowedFilters,
true
);
masterFilter = await getFilter(JSON.parse(req.query.masterFilter), propertiesAllowedFilters, true);
}
listShipmentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('shipment', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getShipmentPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('shipment', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchShipmentsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('shipment', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newShipmentRouteHandler(req, res);
});
@ -109,28 +87,19 @@ router.get('/history', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, async (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
getShipmentNeighborsRouteHandler(
req,
res,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order,
id
);
getShipmentNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('shipment', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getShipmentRouteHandler(req, res);
});
// update multiple shipments
router.put('/', isAuthenticated, checkPermissions('shipment', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultipleShipmentsRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('shipment', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editShipmentRouteHandler(req, res);
});
@ -138,31 +107,16 @@ router.delete('/:id', isAuthenticated, async (req, res) => {
deleteShipmentRouteHandler(req, res);
});
router.post(
'/:id/ship',
isAuthenticated,
checkPermissions('shipment', 'ship'),
async (req, res) => {
shipShipmentRouteHandler(req, res);
}
);
router.post('/:id/ship', isAuthenticated, async (req, res) => {
shipShipmentRouteHandler(req, res);
});
router.post(
'/:id/receive',
isAuthenticated,
checkPermissions('shipment', 'receive'),
async (req, res) => {
receiveShipmentRouteHandler(req, res);
}
);
router.post('/:id/receive', isAuthenticated, async (req, res) => {
receiveShipmentRouteHandler(req, res);
});
router.post(
'/:id/cancel',
isAuthenticated,
checkPermissions('shipment', 'cancel'),
async (req, res) => {
cancelShipmentRouteHandler(req, res);
}
);
router.post('/:id/cancel', isAuthenticated, async (req, res) => {
cancelShipmentRouteHandler(req, res);
});
export default router;

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { parseFilter, getFilter, getSort } from '../../utils.js';
const router = express.Router();
@ -46,12 +45,12 @@ router.get('/', isAuthenticated, async (req, res) => {
});
// Create new stock audit
router.post('/', isAuthenticated, checkPermissions('stockAudit', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newStockAuditRouteHandler(req, res);
});
// get stock audit stats
router.get('/search', checkPermissions('stockAudit', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchStockAuditsRouteHandler(req, res, search);
});
@ -72,12 +71,12 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
});
// Get specific stock audit
router.get('/:id', isAuthenticated, checkPermissions('stockAudit', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getStockAuditRouteHandler(req, res);
});
// Update stock audit
router.put('/:id', isAuthenticated, checkPermissions('stockAudit', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
updateStockAuditRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -31,7 +30,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listStockEventsRouteHandler(req, res, page, limit, filter, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('stockEvent', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -41,17 +40,17 @@ router.get('/properties', checkPermissions('stockEvent', 'list'), isAuthenticate
listStockEventsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('stockEvent', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getStockEventPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('stockEvent', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchStockEventsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('stockEvent', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newStockEventRouteHandler(req, res);
});
@ -71,16 +70,16 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getStockEventNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('stockEvent', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getStockEventRouteHandler(req, res);
});
// update multiple stock events
router.put('/', isAuthenticated, checkPermissions('stockEvent', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultipleStockEventsRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('stockEvent', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editStockEventRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -30,7 +29,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listStockLocationsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('stockLocation', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -40,17 +39,17 @@ router.get('/properties', checkPermissions('stockLocation', 'list'), isAuthentic
listStockLocationsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('stockLocation', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getStockLocationPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('stockLocation', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchStockLocationsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('stockLocation', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newStockLocationRouteHandler(req, res);
});
@ -68,15 +67,15 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getStockLocationNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('stockLocation', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getStockLocationRouteHandler(req, res);
});
router.put('/', isAuthenticated, checkPermissions('stockLocation', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultipleStockLocationsRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('stockLocation', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editStockLocationRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -39,7 +38,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listStockTransfersRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('stockTransfer', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -49,17 +48,17 @@ router.get('/properties', checkPermissions('stockTransfer', 'list'), isAuthentic
listStockTransfersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('stockTransfer', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getStockTransferPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('stockTransfer', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchStockTransfersRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('stockTransfer', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newStockTransferRouteHandler(req, res);
});
@ -77,15 +76,15 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getStockTransferNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('stockTransfer', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getStockTransferRouteHandler(req, res);
});
router.put('/', isAuthenticated, checkPermissions('stockTransfer', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultipleStockTransfersRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('stockTransfer', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editStockTransferRouteHandler(req, res);
});
@ -93,7 +92,7 @@ router.delete('/:id', isAuthenticated, async (req, res) => {
deleteStockTransferRouteHandler(req, res);
});
router.post('/:id/post', isAuthenticated, checkPermissions('stockTransfer', 'post'), async (req, res) => {
router.post('/:id/post', isAuthenticated, async (req, res) => {
postStockTransferRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -39,24 +38,24 @@ router.get('/', isAuthenticated, async (req, res) => {
listAppPasswordsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('appPassword', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
const properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const masterFilter = req.query.masterFilter ? JSON.parse(req.query.masterFilter) : {};
listAppPasswordsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('appPassword', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getAppPasswordPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('appPassword', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchAppPasswordsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('user', 'newAppPassword'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newAppPasswordRouteHandler(req, res);
});
@ -68,7 +67,7 @@ router.get('/history', isAuthenticated, async (req, res) => {
getAppPasswordHistoryRouteHandler(req, res);
});
router.post('/:id/regenerateSecret', isAuthenticated, checkPermissions('appPassword', 'regenerateSecret'), async (req, res) => {
router.post('/:id/regenerateSecret', isAuthenticated, async (req, res) => {
regenerateSecretRouteHandler(req, res);
});
@ -82,7 +81,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getAppPasswordRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('appPassword', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editAppPasswordRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import {
listAuditLogsRouteHandler,
getAuditLogRouteHandler,
@ -36,7 +35,7 @@ router.get('/', isAuthenticated, async (req, res) => {
);
});
router.get('/search', checkPermissions('auditLog', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchAuditLogsRouteHandler(req, res, search);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -40,7 +39,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listCouriersRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('courier', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -50,17 +49,17 @@ router.get('/properties', checkPermissions('courier', 'list'), isAuthenticated,
listCouriersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('courier', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getCourierPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('courier', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchCouriersRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('courier', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newCourierRouteHandler(req, res);
});
@ -84,7 +83,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getCourierRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('courier', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editCourierRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -64,7 +63,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listCourierServicesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('courierService', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -74,17 +73,17 @@ router.get('/properties', checkPermissions('courierService', 'list'), isAuthenti
listCourierServicesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('courierService', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getCourierServicePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('courierService', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchCourierServicesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('courierService', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newCourierServiceRouteHandler(req, res);
});
@ -108,7 +107,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getCourierServiceRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('courierService', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editCourierServiceRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -38,7 +37,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listDocumentJobsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('documentJob', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -48,17 +47,17 @@ router.get('/properties', checkPermissions('documentJob', 'list'), isAuthenticat
listDocumentJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('documentJob', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getDocumentJobPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('documentJob', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchDocumentJobsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('documentJob', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newDocumentJobRouteHandler(req, res);
});
@ -82,7 +81,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getDocumentJobRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('documentJob', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editDocumentJobRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -39,7 +38,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listDocumentPrintersRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('documentPrinter', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -49,17 +48,17 @@ router.get('/properties', checkPermissions('documentPrinter', 'list'), isAuthent
listDocumentPrintersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('documentPrinter', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getDocumentPrinterPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('documentPrinter', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchDocumentPrintersRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('documentPrinter', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newDocumentPrinterRouteHandler(req, res);
});
@ -83,7 +82,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getDocumentPrinterRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('documentPrinter', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editDocumentPrinterRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -30,7 +29,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listDocumentSizesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('documentSize', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -40,17 +39,17 @@ router.get('/properties', checkPermissions('documentSize', 'list'), isAuthentica
listDocumentSizesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('documentSize', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getDocumentSizePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('documentSize', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchDocumentSizesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('documentSize', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newDocumentSizeRouteHandler(req, res);
});
@ -74,7 +73,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getDocumentSizeRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('documentSize', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editDocumentSizeRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -54,7 +53,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listDocumentTemplatesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('documentTemplate', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -64,21 +63,21 @@ router.get('/properties', checkPermissions('documentTemplate', 'list'), isAuthen
listDocumentTemplatesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('documentTemplate', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getDocumentTemplatePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('documentTemplate', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchDocumentTemplatesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('documentTemplate', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newDocumentTemplateRouteHandler(req, res);
});
router.post('/format', isAuthenticated, checkPermissions('documentTemplate', 'design'), async (req, res) => {
router.post('/format', isAuthenticated, async (req, res) => {
formatDocumentTemplateRouteHandler(req, res);
});
@ -98,11 +97,11 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getDocumentTemplateNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.post('/:id/preview', isAuthenticated, checkPermissions('documentTemplate', 'design'), async (req, res) => {
router.post('/:id/preview', isAuthenticated, async (req, res) => {
previewDocumentTemplateRouteHandler(req, res);
});
router.post('/:id/download', isAuthenticated, checkPermissions('documentTemplate', 'design'), async (req, res) => {
router.post('/:id/download', isAuthenticated, async (req, res) => {
downloadDocumentTemplateRouteHandler(req, res);
});
@ -110,7 +109,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getDocumentTemplateRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('documentTemplate', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editDocumentTemplateRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { convertPropertiesString, getFilter, parseFilter, getSort } from '../../utils.js';
const router = express.Router();
@ -60,7 +59,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listFilamentsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('filament', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -70,17 +69,17 @@ router.get('/properties', checkPermissions('filament', 'list'), isAuthenticated,
listFilamentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('filament', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getFilamentPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('filament', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchFilamentsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('filament', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newFilamentRouteHandler(req, res);
});
@ -105,12 +104,12 @@ router.get('/:id', isAuthenticated, async (req, res) => {
});
// update filaments info
router.put('/', isAuthenticated, checkPermissions('filament', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultipleFilamentsRouteHandler(req, res);
});
// update filament info
router.put('/:id', isAuthenticated, checkPermissions('filament', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editFilamentRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -49,7 +48,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listFilamentSkusRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('filamentSku', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
let masterFilter = {};
@ -59,16 +58,16 @@ router.get('/properties', checkPermissions('filamentSku', 'list'), isAuthenticat
listFilamentSkusByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('filamentSku', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getFilamentSkuPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('filamentSku', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchFilamentSkusRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('filament', 'newFilamentSku'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newFilamentSkuRouteHandler(req, res);
});
@ -90,7 +89,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getFilamentSkuRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('filamentSku', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editFilamentSkuRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -42,7 +41,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listFilesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('file', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -52,17 +51,17 @@ router.get('/properties', checkPermissions('file', 'list'), isAuthenticated, asy
listFilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('file', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getFilePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('file', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchFilesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('file', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newFileRouteHandler(req, res);
});
@ -98,7 +97,7 @@ router.get('/:id/thumbnail', isAuthenticated, async (req, res) => {
getFileThumbnailRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('file', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editFileRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -38,7 +37,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listHostsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('host', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -48,17 +47,17 @@ router.get('/properties', checkPermissions('host', 'list'), isAuthenticated, asy
listHostsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('host', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getHostPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('host', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchHostsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('host', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newHostRouteHandler(req, res);
});
@ -82,7 +81,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getHostRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('host', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editHostRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { convertPropertiesString, getFilter, parseFilter, getSort } from '../../utils.js';
const router = express.Router();
@ -38,7 +37,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listMaterialsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('material', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -48,17 +47,17 @@ router.get('/properties', checkPermissions('material', 'list'), isAuthenticated,
listMaterialsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('material', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getMaterialPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('material', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchMaterialsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('material', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newMaterialRouteHandler(req, res);
});
@ -83,7 +82,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
});
// update material info
router.put('/:id', isAuthenticated, checkPermissions('material', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editMaterialRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -38,7 +37,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listNoteTypesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('noteType', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -48,17 +47,17 @@ router.get('/properties', checkPermissions('noteType', 'list'), isAuthenticated,
listNoteTypesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('noteType', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getNoteTypePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('noteType', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchNoteTypesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('noteType', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newNoteTypeRouteHandler(req, res);
});
@ -82,7 +81,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getNoteTypeRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('noteType', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editNoteTypeRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -29,27 +28,18 @@ import {
getPartHistoryRouteHandler,
searchPartsRouteHandler,
getPartPropertyValuesRouteHandler,
getPartNeighborsRouteHandler,
getPartNeighborsRouteHandler
} from '../../services/management/parts.js';
// list of parts
router.get('/', isAuthenticated, async (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
listPartsRouteHandler(
req,
res,
page,
limit,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order
);
const filter = await getFilter(req.query, listAllowedFilters);
listPartsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('part', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -59,17 +49,17 @@ router.get('/properties', checkPermissions('part', 'list'), isAuthenticated, asy
listPartsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('part', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getPartPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('part', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchPartsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('part', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newPartRouteHandler(req, res);
});
@ -86,23 +76,14 @@ router.get('/history', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, async (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
getPartNeighborsRouteHandler(
req,
res,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order,
id
);
getPartNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
getPartRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('part', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editPartRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -50,7 +49,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listPartSkusRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('partSku', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
let masterFilter = {};
@ -60,17 +59,17 @@ router.get('/properties', checkPermissions('partSku', 'list'), isAuthenticated,
listPartSkusByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('partSku', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getPartSkuPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('partSku', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchPartSkusRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('part', 'newPartSku'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newPartSkuRouteHandler(req, res);
});
@ -92,7 +91,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getPartSkuRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('partSku', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editPartSkuRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -38,7 +37,7 @@ router.get('/', isAuthenticated, async (req, res) => {
);
});
router.get('/properties', checkPermissions('permissionSetting', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -48,17 +47,17 @@ router.get('/properties', checkPermissions('permissionSetting', 'list'), isAuthe
listPermissionSettingsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('permissionSetting', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getPermissionSettingsPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('permissionSetting', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchPermissionSettingsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('permissionSetting', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newPermissionSettingsRouteHandler(req, res);
});
@ -89,7 +88,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getPermissionSettingsRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('permissionSetting', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editPermissionSettingsRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
import {
deleteProductCategoryRouteHandler,
@ -29,7 +28,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listProductCategoriesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('productCategory', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
const properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -39,17 +38,17 @@ router.get('/properties', checkPermissions('productCategory', 'list'), isAuthent
listProductCategoriesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('productCategory', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getProductCategoryPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('productCategory', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchProductCategoriesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('productCategory', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newProductCategoryRouteHandler(req, res);
});
@ -71,7 +70,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getProductCategoryRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('productCategory', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editProductCategoryRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -50,7 +49,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listProductsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('product', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -60,17 +59,17 @@ router.get('/properties', checkPermissions('product', 'list'), isAuthenticated,
listProductsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('product', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getProductPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('product', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchProductsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('product', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newProductRouteHandler(req, res);
});
@ -94,7 +93,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getProductRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('product', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editProductRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -50,7 +49,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listProductSkusRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('productSku', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
let masterFilter = {};
@ -60,17 +59,17 @@ router.get('/properties', checkPermissions('productSku', 'list'), isAuthenticate
listProductSkusByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('productSku', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getProductSkuPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('productSku', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchProductSkusRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('product', 'newProductSku'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newProductSkuRouteHandler(req, res);
});
@ -92,7 +91,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getProductSkuRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('productSku', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editProductSkuRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -48,7 +47,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listTaxRatesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('taxRate', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -58,17 +57,17 @@ router.get('/properties', checkPermissions('taxRate', 'list'), isAuthenticated,
listTaxRatesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('taxRate', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getTaxRatePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('taxRate', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchTaxRatesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('taxRate', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newTaxRateRouteHandler(req, res);
});
@ -92,7 +91,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getTaxRateRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('taxRate', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editTaxRateRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -38,7 +37,7 @@ router.get('/', isAuthenticated, async (req, res) => {
);
});
router.get('/properties', checkPermissions('userGroup', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -48,17 +47,17 @@ router.get('/properties', checkPermissions('userGroup', 'list'), isAuthenticated
listUserGroupsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('userGroup', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getUserGroupPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('userGroup', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchUserGroupsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('userGroup', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newUserGroupRouteHandler(req, res);
});
@ -89,7 +88,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getUserGroupRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('userGroup', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editUserGroupRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
const router = express.Router();
@ -40,7 +39,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listUsersRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('user', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -50,11 +49,11 @@ router.get('/properties', checkPermissions('user', 'list'), isAuthenticated, asy
listUsersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('user', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getUserPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('user', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchUsersRouteHandler(req, res, search);
});
@ -81,11 +80,11 @@ router.get('/:id', isAuthenticated, async (req, res) => {
});
// update user info
router.put('/:id', isAuthenticated, checkPermissions('user', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editUserRouteHandler(req, res);
});
router.post('/:id/setAppPassword', isAuthenticated, checkPermissions('user', 'newAppPassword'), async (req, res) => {
router.post('/:id/setAppPassword', isAuthenticated, async (req, res) => {
setAppPasswordRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -38,7 +37,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listVendorsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('vendor', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -48,17 +47,17 @@ router.get('/properties', checkPermissions('vendor', 'list'), isAuthenticated, a
listVendorsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('vendor', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getVendorPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('vendor', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchVendorsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('vendor', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newVendorRouteHandler(req, res);
});
@ -82,7 +81,7 @@ router.get('/:id', isAuthenticated, async (req, res) => {
getVendorRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('vendor', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editVendorRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
import {
deleteFilamentProfileRouteHandler,
@ -11,7 +10,8 @@ import {
newFilamentProfileRouteHandler,
searchFilamentProfilesRouteHandler,
getFilamentProfilePropertyValuesRouteHandler,
getFilamentProfileNeighborsRouteHandler,
getFilamentProfileNeighborsRouteHandler
} from '../../services/production/filamentprofiles.js';
const router = express.Router();
@ -23,20 +23,10 @@ const propertiesAllowedFilters = ['name'];
router.get('/', isAuthenticated, async (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
listFilamentProfilesRouteHandler(
req,
res,
page,
limit,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order
);
listFilamentProfilesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('filamentProfile', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
const properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -46,51 +36,32 @@ router.get('/properties', checkPermissions('filamentProfile', 'list'), isAuthent
listFilamentProfilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('filamentProfile', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getFilamentProfilePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('filamentProfile', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
searchFilamentProfilesRouteHandler(req, res, req.query.search);
});
router.post('/', isAuthenticated, checkPermissions('filamentProfile', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newFilamentProfileRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
getFilamentProfileNeighborsRouteHandler(
req,
res,
property,
filter,
search,
getSort(sort, listAllowedSorters),
order,
id
);
getFilamentProfileNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get(
'/:id',
isAuthenticated,
checkPermissions('filamentProfile', 'info'),
async (req, res) => {
getFilamentProfileRouteHandler(req, res);
}
);
router.get('/:id', isAuthenticated, async (req, res) => {
getFilamentProfileRouteHandler(req, res);
});
router.put(
'/:id',
isAuthenticated,
checkPermissions('filamentProfile', 'edit'),
async (req, res) => {
editFilamentProfileRouteHandler(req, res);
}
);
router.put('/:id', isAuthenticated, async (req, res) => {
editFilamentProfileRouteHandler(req, res);
});
router.delete('/:id', isAuthenticated, async (req, res) => {
deleteFilamentProfileRouteHandler(req, res);

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
const router = express.Router();
@ -39,7 +38,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listGCodeFilesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('gcodeFile', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -49,18 +48,18 @@ router.get('/properties', checkPermissions('gcodeFile', 'list'), isAuthenticated
listGCodeFilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('gcodeFile', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getGCodeFilePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('gcodeFile', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchGCodeFilesRouteHandler(req, res, search);
});
// create new gcodeFile
router.post('/', isAuthenticated, checkPermissions('gcodeFile', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newGCodeFileRouteHandler(req, res);
});
@ -75,7 +74,7 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getGCodeFileNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('gcodeFile', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getGCodeFileRouteHandler(req, res);
});
@ -84,7 +83,7 @@ router.get('/:id/content', isAuthenticated, async (req, res) => {
});
// update gcodeFile info
router.put('/:id', isAuthenticated, checkPermissions('gcodeFile', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editGCodeFileRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
const router = express.Router();
@ -48,7 +47,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listJobsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('job', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -58,16 +57,16 @@ router.get('/properties', checkPermissions('job', 'list'), isAuthenticated, asyn
listJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('job', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getJobPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('job', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchJobsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('job', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newJobRouteHandler(req, res);
});
@ -87,11 +86,11 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getJobNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('job', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getJobRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('job', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editJobRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
import {
deletePrinterProfileRouteHandler,
@ -35,7 +34,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listPrinterProfilesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('printerProfile', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
const properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -45,16 +44,16 @@ router.get('/properties', checkPermissions('printerProfile', 'list'), isAuthenti
listPrinterProfilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('printerProfile', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getPrinterProfilePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('printerProfile', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
searchPrinterProfilesRouteHandler(req, res, req.query.search);
});
router.post('/', isAuthenticated, checkPermissions('printer', 'newPrinterProfile'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newPrinterProfileRouteHandler(req, res);
});
@ -64,11 +63,11 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getPrinterProfileNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('printerProfile', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getPrinterProfileRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('printerProfile', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editPrinterProfileRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
const router = express.Router();
import {
@ -39,7 +38,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listPrintersRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('printer', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -49,17 +48,17 @@ router.get('/properties', checkPermissions('printer', 'list'), isAuthenticated,
listPrintersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('printer', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getPrinterPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('printer', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchPrintersRouteHandler(req, res, search);
});
// create new printer
router.post('/', isAuthenticated, checkPermissions('printer', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newPrinterRouteHandler(req, res);
});
@ -79,12 +78,12 @@ router.get('/stats', isAuthenticated, async (req, res) => {
getPrinterStatsRouteHandler(req, res);
});
router.get('/:id', isAuthenticated, checkPermissions('printer', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getPrinterRouteHandler(req, res);
});
// update printer info
router.put('/:id', isAuthenticated, checkPermissions('printer', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editPrinterRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
const router = express.Router();
@ -46,7 +45,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listSubJobsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('subJob', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -56,11 +55,11 @@ router.get('/properties', checkPermissions('subJob', 'list'), isAuthenticated, a
listSubJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('subJob', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getSubJobPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('subJob', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchSubJobsRouteHandler(req, res, search);
});
@ -81,7 +80,7 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getSubJobNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('subJob', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getSubJobRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -39,7 +38,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listClientsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('client', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -49,17 +48,17 @@ router.get('/properties', checkPermissions('client', 'list'), isAuthenticated, a
listClientsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('client', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getClientPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('client', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchClientsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('client', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newClientRouteHandler(req, res);
});
@ -79,11 +78,11 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getClientNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('client', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getClientRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('client', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editClientRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -65,7 +64,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listListingsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('listing', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -75,16 +74,16 @@ router.get('/properties', checkPermissions('listing', 'list'), isAuthenticated,
listListingsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('listing', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getListingPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('listing', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchListingsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('listing', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newListingRouteHandler(req, res);
});
@ -96,11 +95,11 @@ router.get('/history', isAuthenticated, async (req, res) => {
getListingHistoryRouteHandler(req, res);
});
router.post('/:id/publish', isAuthenticated, checkPermissions('listing', 'publish'), async (req, res) => {
router.post('/:id/publish', isAuthenticated, async (req, res) => {
publishListingRouteHandler(req, res);
});
router.post('/:id/unpublish', isAuthenticated, checkPermissions('listing', 'unpublish'), async (req, res) => {
router.post('/:id/unpublish', isAuthenticated, async (req, res) => {
unpublishListingRouteHandler(req, res);
});
@ -110,11 +109,11 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getListingNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('listing', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getListingRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('listing', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editListingRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -52,7 +51,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listListingVarientsRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('listingVarient', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -62,17 +61,17 @@ router.get('/properties', checkPermissions('listingVarient', 'list'), isAuthenti
listListingVarientsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('listingVarient', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getListingVarientPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('listingVarient', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchListingVarientsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('listing', 'newListingVarient'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newListingVarientRouteHandler(req, res);
});
@ -84,11 +83,11 @@ router.get('/history', isAuthenticated, async (req, res) => {
getListingVarientHistoryRouteHandler(req, res);
});
router.post('/:id/publish', isAuthenticated, checkPermissions('listingVarient', 'publish'), async (req, res) => {
router.post('/:id/publish', isAuthenticated, async (req, res) => {
publishListingVarientRouteHandler(req, res);
});
router.post('/:id/unpublish', isAuthenticated, checkPermissions('listingVarient', 'unpublish'), async (req, res) => {
router.post('/:id/unpublish', isAuthenticated, async (req, res) => {
unpublishListingVarientRouteHandler(req, res);
});
@ -98,11 +97,11 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getListingVarientNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('listingVarient', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getListingVarientRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('listingVarient', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editListingVarientRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions, hasPermission } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -54,7 +53,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listMarketplacesRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('marketplace', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -64,17 +63,17 @@ router.get('/properties', checkPermissions('marketplace', 'list'), isAuthenticat
listMarketplacesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('marketplace', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getMarketplacePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('marketplace', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchMarketplacesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('marketplace', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newMarketplaceRouteHandler(req, res);
});
@ -90,31 +89,19 @@ router.get('/:id/auth/url', isAuthenticated, async (req, res) => {
getMarketplaceAuthUrlRouteHandler(req, res);
});
router.post('/:id/auth/exchange', isAuthenticated, async (req, res, next) => {
try {
const allowed =
(await hasPermission(req.user, 'marketplace', 'connect')) ||
(await hasPermission(req.user, 'marketplace', 'reconnect'));
if (!allowed) {
return res.status(403).json({ error: 'Forbidden', code: 'FORBIDDEN' });
}
return next();
} catch (err) {
return next(err);
}
}, async (req, res) => {
router.post('/:id/auth/exchange', isAuthenticated, async (req, res) => {
exchangeMarketplaceAuthCodeRouteHandler(req, res);
});
router.post('/:id/auth/refresh', isAuthenticated, checkPermissions('marketplace', 'refreshToken'), async (req, res) => {
router.post('/:id/auth/refresh', isAuthenticated, async (req, res) => {
refreshMarketplaceAuthRouteHandler(req, res);
});
router.post('/:id/sync/items', isAuthenticated, checkPermissions('marketplace', 'syncListings'), async (req, res) => {
router.post('/:id/sync/items', isAuthenticated, async (req, res) => {
syncMarketplaceItemsRouteHandler(req, res);
});
router.post('/:id/sync/orders', isAuthenticated, checkPermissions('marketplace', 'syncOrders'), async (req, res) => {
router.post('/:id/sync/orders', isAuthenticated, async (req, res) => {
syncMarketplaceOrdersRouteHandler(req, res);
});
@ -129,11 +116,11 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getMarketplaceNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('marketplace', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getMarketplaceRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('marketplace', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editMarketplaceRouteHandler(req, res);
});

View File

@ -1,6 +1,5 @@
import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
@ -41,7 +40,7 @@ router.get('/', isAuthenticated, async (req, res) => {
listSalesOrdersRouteHandler(req, res, page, limit, property, filter, search, getSort(sort, listAllowedSorters), order);
});
router.get('/properties', checkPermissions('salesOrder', 'list'), isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
@ -51,16 +50,16 @@ router.get('/properties', checkPermissions('salesOrder', 'list'), isAuthenticate
listSalesOrdersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', checkPermissions('salesOrder', 'list'), isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, async (req, res) => {
const { property } = req.query;
getSalesOrderPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', checkPermissions('salesOrder', 'list'), isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, async (req, res) => {
const { search } = req.query;
searchSalesOrdersRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('salesOrder', 'new'), async (req, res) => {
router.post('/', isAuthenticated, async (req, res) => {
newSalesOrderRouteHandler(req, res);
});
@ -80,16 +79,16 @@ router.get('/neighbors', isAuthenticated, async (req, res) => {
getSalesOrderNeighborsRouteHandler(req, res, property, filter, search, getSort(sort, listAllowedSorters), order, id);
});
router.get('/:id', isAuthenticated, checkPermissions('salesOrder', 'info'), async (req, res) => {
router.get('/:id', isAuthenticated, async (req, res) => {
getSalesOrderRouteHandler(req, res);
});
// update multiple sales orders
router.put('/', isAuthenticated, checkPermissions('salesOrder', 'edit'), async (req, res) => {
router.put('/', isAuthenticated, async (req, res) => {
editMultipleSalesOrdersRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('salesOrder', 'edit'), async (req, res) => {
router.put('/:id', isAuthenticated, async (req, res) => {
editSalesOrderRouteHandler(req, res);
});
@ -97,15 +96,15 @@ router.delete('/:id', isAuthenticated, async (req, res) => {
deleteSalesOrderRouteHandler(req, res);
});
router.post('/:id/post', isAuthenticated, checkPermissions('salesOrder', 'post'), async (req, res) => {
router.post('/:id/post', isAuthenticated, async (req, res) => {
postSalesOrderRouteHandler(req, res);
});
router.post('/:id/confirm', isAuthenticated, checkPermissions('salesOrder', 'confirm'), async (req, res) => {
router.post('/:id/confirm', isAuthenticated, async (req, res) => {
confirmSalesOrderRouteHandler(req, res);
});
router.post('/:id/cancel', isAuthenticated, checkPermissions('salesOrder', 'cancel'), async (req, res) => {
router.post('/:id/cancel', isAuthenticated, async (req, res) => {
cancelSalesOrderRouteHandler(req, res);
});