q3-core-access
v4.5.13
Published
Q3's access control system integrates with Mongoose for role-based querying. It also connects to `q3-core-rest` to automate authorization in the request and response payloads.
Downloads
122
Readme
Access
Q3's access control system integrates with Mongoose for
role-based querying. It also connects to q3-core-rest
to
automate authorization in the request and response payloads.
Note that the access control's ledger uses a singleton pattern so that grants initialized at run-time can be referenced anywhere. It also relies on a static array, so changes made to permissions will be lost on reboot.
Q3 API automatically loads grants when it detects the q3-access.json file, so most projects will have little else to configure.
Syntax
The JSON object below represents all possible fields.
{
"fields": ["*"],
"role": "Developer",
"coll": "tests",
"op": "Read",
"ownership": "Any",
"documentConditions": [],
"ownershipAliases": [],
"ownershipAliasesOnly": false,
"ownershipAliasesWith": false,
"ownershipConditions": []
}
Field
The field property determines the attributes within a document a user can access. When left undefined, everything is disallowed. This module interprets fields as globs so that we can define rules and cover datasets. It can support a single rule, an array of rules and conditional rules. For examples, please see below.
Single rule
The field below will only grant access to the foo and bar properties. Everything else will be ignored.
{
"fields": "{foo,bar}"
}
Array of rules
The field below will not grant access to the foo and bar properties. Everything else will be included. Arrays are best for defining exclusions.
{
"fields": ["!foo", "!bar"]
}
Conditional rules
The field below will exclude the foo property when the value of bar is greater than 1. The wildcard property can be used if the bar field is nested or repeated throughout the document. An undefined test is assumed to be truthy.
{
"fields": [
{
"glob": "foo",
"negate": true,
"wildcard": false,
"test": ["bar>1"]
}
]
}