@lblod/mu-auth-sudo 0.1.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/auth-sudo.js +64 -9
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -1,2 +1,23 @@
|
|
|
1
1
|
# mu-auth-sudo
|
|
2
2
|
NPM package for a sparql client for mu.semte.ch that overrules access rights in queries through a mu-auth-sudo header.
|
|
3
|
+
|
|
4
|
+
## Usage
|
|
5
|
+
```
|
|
6
|
+
npm install @lblod/mu-auth-sudo
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Include the following in your code
|
|
10
|
+
```
|
|
11
|
+
import { querySudo as query, updateSudo as update } from '@lblod/mu-auth-sudo';
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Logging
|
|
15
|
+
|
|
16
|
+
The verbosity of logging can be configured as in the [javascript template](https://github.com/mu-semtech/mu-javascript-template/blob/6ff43eaf51856783c6946e82344e31a3348ce4a3/README.md#logging) through following environment variables:
|
|
17
|
+
|
|
18
|
+
- `LOG_SPARQL_ALL`: Logging of all executed SPARQL queries, read as well as update (default `true`)
|
|
19
|
+
- `LOG_SPARQL_QUERIES`: Logging of executed SPARQL read queries (default: `undefined`). Overrules `LOG_SPARQL_ALL`.
|
|
20
|
+
- `LOG_SPARQL_UPDATES`: Logging of executed SPARQL update queries (default `undefined`). Overrules `LOG_SPARQL_ALL`.
|
|
21
|
+
- `DEBUG_AUTH_HEADERS`: Debugging of [mu-authorization](https://github.com/mu-semtech/mu-authorization) access-control related headers (default `true`)
|
|
22
|
+
|
|
23
|
+
Following values are considered true: [`"true"`, `"TRUE"`, `"1"`].
|
package/dist/auth-sudo.js
CHANGED
|
@@ -11,14 +11,20 @@ var _expressHttpContext2 = _interopRequireDefault(_expressHttpContext);
|
|
|
11
11
|
|
|
12
12
|
var _sparqlClient = require('sparql-client-2');
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _envVar = require('env-var');
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
var _envVar2 = _interopRequireDefault(_envVar);
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
19
|
|
|
20
|
+
var LOG_SPARQL_QUERIES = process.env.LOG_SPARQL_QUERIES != undefined ? _envVar2.default.get('LOG_SPARQL_QUERIES').asBool() : _envVar2.default.get('LOG_SPARQL_ALL').asBool();
|
|
21
|
+
var LOG_SPARQL_UPDATES = process.env.LOG_SPARQL_UPDATES != undefined ? _envVar2.default.get('LOG_SPARQL_UPDATES').asBool() : _envVar2.default.get('LOG_SPARQL_ALL').asBool();
|
|
22
|
+
var DEBUG_AUTH_HEADERS = _envVar2.default.get('DEBUG_AUTH_HEADERS').asBool();
|
|
20
23
|
|
|
21
24
|
function sudoSparqlClient() {
|
|
25
|
+
var extraHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
26
|
+
var sparqlEndpoint = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : process.env.MU_SPARQL_ENDPOINT;
|
|
27
|
+
|
|
22
28
|
var options = {
|
|
23
29
|
requestDefaults: {
|
|
24
30
|
headers: {
|
|
@@ -32,14 +38,45 @@ function sudoSparqlClient() {
|
|
|
32
38
|
options.requestDefaults.headers['mu-call-id'] = _expressHttpContext2.default.get('request').get('mu-call-id');
|
|
33
39
|
}
|
|
34
40
|
|
|
35
|
-
|
|
41
|
+
if (extraHeaders) {
|
|
42
|
+
var _iteratorNormalCompletion = true;
|
|
43
|
+
var _didIteratorError = false;
|
|
44
|
+
var _iteratorError = undefined;
|
|
45
|
+
|
|
46
|
+
try {
|
|
47
|
+
for (var _iterator = Object.keys(extraHeaders)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
48
|
+
var key = _step.value;
|
|
49
|
+
|
|
50
|
+
options.requestDefaults.headers[key] = extraHeaders[key];
|
|
51
|
+
}
|
|
52
|
+
} catch (err) {
|
|
53
|
+
_didIteratorError = true;
|
|
54
|
+
_iteratorError = err;
|
|
55
|
+
} finally {
|
|
56
|
+
try {
|
|
57
|
+
if (!_iteratorNormalCompletion && _iterator.return) {
|
|
58
|
+
_iterator.return();
|
|
59
|
+
}
|
|
60
|
+
} finally {
|
|
61
|
+
if (_didIteratorError) {
|
|
62
|
+
throw _iteratorError;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (DEBUG_AUTH_HEADERS) {
|
|
69
|
+
console.log('Headers set on SPARQL client: ' + JSON.stringify(options));
|
|
70
|
+
}
|
|
36
71
|
|
|
37
|
-
return new SparqlClient(
|
|
72
|
+
return new _sparqlClient.SparqlClient(sparqlEndpoint, options);
|
|
38
73
|
}
|
|
39
74
|
|
|
40
|
-
function
|
|
41
|
-
|
|
42
|
-
|
|
75
|
+
function executeRawQuery(queryString) {
|
|
76
|
+
var extraHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
77
|
+
var sparqlEndpoint = arguments[2];
|
|
78
|
+
|
|
79
|
+
return sudoSparqlClient(extraHeaders, sparqlEndpoint).query(queryString).executeRaw().then(function (response) {
|
|
43
80
|
function maybeParseJSON(body) {
|
|
44
81
|
// Catch invalid JSON
|
|
45
82
|
try {
|
|
@@ -53,7 +90,25 @@ function querySudo(queryString) {
|
|
|
53
90
|
});
|
|
54
91
|
}
|
|
55
92
|
|
|
56
|
-
|
|
93
|
+
function querySudo(queryString) {
|
|
94
|
+
var extraHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
95
|
+
var sparqlEndpoint = arguments[2];
|
|
96
|
+
|
|
97
|
+
if (LOG_SPARQL_QUERIES) {
|
|
98
|
+
console.log(queryString);
|
|
99
|
+
}
|
|
100
|
+
return executeRawQuery(queryString, extraHeaders, sparqlEndpoint);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function updateSudo(queryString) {
|
|
104
|
+
var extraHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
105
|
+
var sparqlEndpoint = arguments[2];
|
|
106
|
+
|
|
107
|
+
if (LOG_SPARQL_UPDATES) {
|
|
108
|
+
console.log(queryString);
|
|
109
|
+
}
|
|
110
|
+
return executeRawQuery(queryString, extraHeaders, sparqlEndpoint);
|
|
111
|
+
}
|
|
57
112
|
|
|
58
113
|
var _exports = {
|
|
59
114
|
querySudo: querySudo,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lblod/mu-auth-sudo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "this package provides an alternative sparql client for the mu-javascript-template that has sudo rights.",
|
|
5
5
|
"main": "dist/auth-sudo.js",
|
|
6
6
|
"scripts": {
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"babel-register": "^6.26.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
+
"env-var": "^7.0.1",
|
|
42
43
|
"sparql-client-2": "https://github.com/erikap/node-sparql-client.git"
|
|
43
44
|
}
|
|
44
45
|
}
|