soajs.multitenant
Version:
soajs multitenant service
75 lines (69 loc) • 1.46 kB
JavaScript
/**
* @license
* Copyright SOAJS All Rights Reserved.
*
* Use of this source code is governed by an Apache license that can be
* found in the LICENSE file at the root of this repository
*/
;
const apisObject = {
"type": "object",
"required": false,
"patternProperties": {
"^[_a-z\/][_a-zA-Z0-9\/:]*$": { //pattern to match an api route
"type": "object",
"required": true,
"properties": {
"access": {"type": "boolean"},
}
}
}
};
const aclRoute = {
"type": "array",
"items":
{
"type": "object",
"properties": {
"access": {"type": "string"},
"apis": apisObject
}
}
};
let scope = {
"type": "object",
"patternProperties": {
"^[a-zA-Z0-9]+$": {
"type": "object",
"patternProperties": {
"^[^\W\.]+$": {
"type": "object",
"patternProperties": {
".+": {
"type": "object",
"properties": {
"access": {"type": "boolean"},
"apisPermission": {
"type": "string", "enum": ["restricted"]
},
"get": aclRoute,
"post": aclRoute,
"put": aclRoute,
"delete": aclRoute,
"head": aclRoute,
"options": aclRoute,
"other": aclRoute,
"additionalProperties": false
},
"additionalProperties": false
}
},
"additionalProperties": false
},
},
"additionalProperties": false
}
},
"additionalProperties": false
};
module.exports = scope;