117 lines
3.1 KiB
TypeScript
117 lines
3.1 KiB
TypeScript
// ATTENTION: Those constraints are no longer the same file as for the client / admin interface.
|
|
// Make sure changes are also reflected in /shared/validation/constraints.js.
|
|
|
|
// noinspection RegExpSimplifiable
|
|
const CONSTRAINTS = {
|
|
id: {
|
|
type: 'string',
|
|
regex: /^[1-9][0-9]*$/,
|
|
optional: false
|
|
},
|
|
token: {
|
|
type: 'string',
|
|
regex: /^[0-9a-fA-F]{16}$/,
|
|
optional: false
|
|
},
|
|
node: {
|
|
hostname: {
|
|
type: 'string',
|
|
regex: /^[-a-z0-9_]{1,32}$/i,
|
|
optional: false
|
|
},
|
|
key: {
|
|
type: 'string',
|
|
regex: /^([a-f0-9]{64})$/i,
|
|
optional: true
|
|
},
|
|
email: {
|
|
type: 'string',
|
|
regex: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,
|
|
optional: false
|
|
},
|
|
nickname: {
|
|
type: 'string',
|
|
regex: /^[-a-z0-9_ äöüß]{1,64}$/i,
|
|
optional: false
|
|
},
|
|
mac: {
|
|
type: 'string',
|
|
regex: /^([a-f0-9]{12}|([a-f0-9]{2}:){5}[a-f0-9]{2}|([a-f0-9]{2}-){5}[a-f0-9]{2})$/i,
|
|
optional: false
|
|
},
|
|
coords: {
|
|
type: 'string',
|
|
regex: /^(-?[0-9]{1,3}(\.[0-9]{1,15})? -?[0-9]{1,3}(\.[0-9]{1,15})?)$/,
|
|
optional: true
|
|
},
|
|
monitoring: {
|
|
type: 'boolean',
|
|
optional: false
|
|
}
|
|
},
|
|
nodeFilters: {
|
|
hasKey: {
|
|
type: 'boolean',
|
|
optional: true
|
|
},
|
|
hasCoords: {
|
|
type: 'boolean',
|
|
optional: true
|
|
},
|
|
onlineState: {
|
|
type: 'string',
|
|
regex: /^(ONLINE|OFFLINE)$/,
|
|
optional: true
|
|
},
|
|
monitoringState: {
|
|
type: 'string',
|
|
regex: /^(disabled|active|pending)$/,
|
|
optional: true
|
|
},
|
|
site: {
|
|
type: 'string',
|
|
regex: /^[a-z0-9_-]{1,32}$/,
|
|
optional: true
|
|
},
|
|
domain: {
|
|
type: 'string',
|
|
regex: /^[a-z0-9_-]{1,32}$/,
|
|
optional: true
|
|
}
|
|
},
|
|
rest: {
|
|
list: {
|
|
_page: {
|
|
type: 'number',
|
|
min: 1,
|
|
optional: true,
|
|
default: 1
|
|
},
|
|
_perPage: {
|
|
type: 'number',
|
|
min: 1,
|
|
max: 50,
|
|
optional: true,
|
|
default: 20
|
|
},
|
|
_sortDir: {
|
|
type: 'enum',
|
|
allowed: ['ASC', 'DESC'],
|
|
optional: true,
|
|
default: 'ASC'
|
|
},
|
|
_sortField: {
|
|
type: 'string',
|
|
regex: /^[a-zA-Z0-9_]{1,32}$/,
|
|
optional: true
|
|
},
|
|
q: {
|
|
type: 'string',
|
|
regex: /^[äöüß a-z0-9!#$%&@:.'*+/=?^_`{|}~-]{1,64}$/i,
|
|
optional: true
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
export default CONSTRAINTS;
|