Archived
2

improved globals and added status and spectrum

This commit is contained in:
VLE2FE
2020-08-11 16:06:51 +02:00
parent 2c57d2045c
commit f94653f389
19 changed files with 101 additions and 88 deletions

View File

@ -1,6 +1,7 @@
import Joi from 'joi';
import IdValidate from './id';
import globals from '../../globals';
export default class MaterialValidate { // validate input for material
private static material = {
@ -84,7 +85,7 @@ export default class MaterialValidate { // validate input for material
static query (data) {
return Joi.object({
status: Joi.string().valid('validated', 'new', 'all')
status: Joi.string().valid(globals.status.val, globals.status.new, 'all')
}).validate(data);
}
}

View File

@ -1,6 +1,7 @@
import Joi from 'joi';
import IdValidate from './id';
import globals from '../../globals';
export default class MeasurementValidate {
private static measurement = {
@ -37,8 +38,8 @@ export default class MeasurementValidate {
static output (data, req) { // validate output and strip unwanted properties, returns null if not valid
data = IdValidate.stringify(data);
// spectral data not allowed for read/write users
if (['dev', 'admin'].indexOf(req.authDetails.level) < 0 && data.values.dpt) {
delete data.values.dpt;
if (['dev', 'admin'].indexOf(req.authDetails.level) < 0 && data.values[globals.spectrum.dpt]) {
delete data.values[globals.spectrum.dpt];
}
const {value, error} = Joi.object({
_id: IdValidate.get(),

View File

@ -36,7 +36,7 @@ export default class RootValidate { // validate input for root methods
static changelogOutput (data) {
data.date = data._id.getTimestamp();
data.collection = data.collectionName;
data.collection = data.collection_name;
data = IdValidate.stringify(data);
const {value, error} = Joi.object({
date: this.changelog.timestamp,

View File

@ -53,7 +53,7 @@ export default class SampleValidate {
.min('1970-01-01T00:00:00.000Z'),
status: Joi.string()
.valid(...globals.status)
.valid(...Object.values(globals.status))
};
private static sortKeys = [
@ -68,7 +68,7 @@ export default class SampleValidate {
'material.supplier',
'material.group',
'material.properties.*',
'measurements.(?!spectrum\.dpt)*'
`measurements.(?!${globals.spectrum.spectrum}.${globals.spectrum.dpt})*`
];
private static fieldKeys = [
@ -81,7 +81,7 @@ export default class SampleValidate {
'user_id',
'material._id',
'material.numbers',
'measurements.spectrum.dpt',
`measurements.${globals.spectrum.spectrum}.${globals.spectrum.dpt}`,
];
static input (data, param) { // validate input, set param to 'new' to make all attributes required
@ -215,12 +215,12 @@ export default class SampleValidate {
return {error: {details: [{message: 'Invalid JSON string for filter parameter'}]}, value: null}
}
}
const acceptedStatuses = ['validated', 'new'];
const acceptedStatuses = [globals.status.val, globals.status.new];
if (dev) { // dev and admin can also access deleted samples
acceptedStatuses.push('deleted')
acceptedStatuses.push(globals.status.del)
}
return Joi.object({
status: Joi.array().items(Joi.string().valid(...acceptedStatuses)).default(['validated']),
status: Joi.array().items(Joi.string().valid(...acceptedStatuses)).default([globals.status.val]),
'from-id': IdValidate.get(),
'to-page': Joi.number().integer(),
'page-size': Joi.number().integer().min(1),

View File

@ -21,7 +21,7 @@ export default class UserValidate { // validate input for user
.max(128),
level: Joi.string()
.valid(...globals.levels),
.valid(...Object.values(globals.levels)),
location: Joi.string()
.alphanum()