@webda/core 2.4.1 → 3.0.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/lib/application.d.ts +171 -34
- package/lib/application.js +243 -47
- package/lib/application.js.map +1 -1
- package/lib/application.spec.js +44 -8
- package/lib/application.spec.js.map +1 -1
- package/lib/core.d.ts +113 -54
- package/lib/core.js +222 -135
- package/lib/core.js.map +1 -1
- package/lib/core.spec.js +87 -43
- package/lib/core.spec.js.map +1 -1
- package/lib/errors.d.ts +65 -0
- package/lib/errors.js +113 -0
- package/lib/errors.js.map +1 -0
- package/lib/errors.spec.d.ts +1 -0
- package/lib/errors.spec.js +33 -0
- package/lib/errors.spec.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/models/aclmodel.d.ts +4 -4
- package/lib/models/aclmodel.js +10 -6
- package/lib/models/aclmodel.js.map +1 -1
- package/lib/models/aclmodel.spec.js +33 -24
- package/lib/models/aclmodel.spec.js.map +1 -1
- package/lib/models/coremodel.d.ts +284 -92
- package/lib/models/coremodel.js +403 -103
- package/lib/models/coremodel.js.map +1 -1
- package/lib/models/coremodel.spec.js +162 -24
- package/lib/models/coremodel.spec.js.map +1 -1
- package/lib/models/ident.d.ts +20 -6
- package/lib/models/ident.js.map +1 -1
- package/lib/models/ownermodel.d.ts +13 -23
- package/lib/models/ownermodel.js +24 -51
- package/lib/models/ownermodel.js.map +1 -1
- package/lib/models/ownermodel.spec.js +23 -11
- package/lib/models/ownermodel.spec.js.map +1 -1
- package/lib/models/relations.d.ts +167 -0
- package/lib/models/relations.js +113 -0
- package/lib/models/relations.js.map +1 -0
- package/lib/models/rolemodel.d.ts +3 -3
- package/lib/models/rolemodel.js +6 -6
- package/lib/models/rolemodel.js.map +1 -1
- package/lib/models/rolemodel.spec.js +12 -12
- package/lib/models/rolemodel.spec.js.map +1 -1
- package/lib/models/user.d.ts +40 -24
- package/lib/models/user.js +74 -48
- package/lib/models/user.js.map +1 -1
- package/lib/models/user.spec.js +24 -4
- package/lib/models/user.spec.js.map +1 -1
- package/lib/queues/memoryqueue.spec.js +9 -5
- package/lib/queues/memoryqueue.spec.js.map +1 -1
- package/lib/queues/queueservice.js.map +1 -1
- package/lib/router.d.ts +17 -8
- package/lib/router.js +81 -9
- package/lib/router.js.map +1 -1
- package/lib/router.spec.js +89 -5
- package/lib/router.spec.js.map +1 -1
- package/lib/services/asyncevents.spec.js +4 -4
- package/lib/services/authentication.d.ts +21 -22
- package/lib/services/authentication.js +90 -109
- package/lib/services/authentication.js.map +1 -1
- package/lib/services/authentication.spec.js +51 -65
- package/lib/services/authentication.spec.js.map +1 -1
- package/lib/services/binary.d.ts +132 -31
- package/lib/services/binary.js +257 -72
- package/lib/services/binary.js.map +1 -1
- package/lib/services/binary.spec.d.ts +16 -6
- package/lib/services/binary.spec.js +44 -117
- package/lib/services/binary.spec.js.map +1 -1
- package/lib/services/cloudbinary.d.ts +9 -10
- package/lib/services/cloudbinary.js +14 -15
- package/lib/services/cloudbinary.js.map +1 -1
- package/lib/services/cloudbinary.spec.d.ts +2 -2
- package/lib/services/cloudbinary.spec.js +13 -12
- package/lib/services/cloudbinary.spec.js.map +1 -1
- package/lib/services/configuration.js +9 -9
- package/lib/services/configuration.js.map +1 -1
- package/lib/services/configuration.spec.js +5 -7
- package/lib/services/configuration.spec.js.map +1 -1
- package/lib/services/cron.spec.js +3 -4
- package/lib/services/cron.spec.js.map +1 -1
- package/lib/services/cryptoservice.d.ts +2 -2
- package/lib/services/cryptoservice.js +5 -2
- package/lib/services/cryptoservice.js.map +1 -1
- package/lib/services/domainservice.d.ts +113 -0
- package/lib/services/domainservice.js +357 -0
- package/lib/services/domainservice.js.map +1 -0
- package/lib/services/domainservice.spec.d.ts +1 -0
- package/lib/services/domainservice.spec.js +334 -0
- package/lib/services/domainservice.spec.js.map +1 -0
- package/lib/services/echo.d.ts +2 -2
- package/lib/services/echo.js.map +1 -1
- package/lib/services/echo.spec.js +9 -2
- package/lib/services/echo.spec.js.map +1 -1
- package/lib/services/filebinary.d.ts +13 -14
- package/lib/services/filebinary.js +79 -73
- package/lib/services/filebinary.js.map +1 -1
- package/lib/services/filebinary.spec.d.ts +5 -0
- package/lib/services/filebinary.spec.js +222 -11
- package/lib/services/filebinary.spec.js.map +1 -1
- package/lib/services/fileconfiguration.js +7 -7
- package/lib/services/fileconfiguration.js.map +1 -1
- package/lib/services/fileconfiguration.spec.js +23 -24
- package/lib/services/fileconfiguration.spec.js.map +1 -1
- package/lib/services/invitationservice.d.ts +11 -9
- package/lib/services/invitationservice.js +17 -23
- package/lib/services/invitationservice.js.map +1 -1
- package/lib/services/invitationservice.spec.js +43 -40
- package/lib/services/invitationservice.spec.js.map +1 -1
- package/lib/services/kubernetesconfiguration.js +12 -22
- package/lib/services/kubernetesconfiguration.js.map +1 -1
- package/lib/services/kubernetesconfiguration.spec.js +1 -6
- package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
- package/lib/services/mailer.js +1 -1
- package/lib/services/mailer.js.map +1 -1
- package/lib/services/mailer.spec.js +4 -1
- package/lib/services/mailer.spec.js.map +1 -1
- package/lib/services/oauth.d.ts +17 -9
- package/lib/services/oauth.js +30 -4
- package/lib/services/oauth.js.map +1 -1
- package/lib/services/oauth.spec.js +32 -15
- package/lib/services/oauth.spec.js.map +1 -1
- package/lib/services/prometheus.spec.js.map +1 -1
- package/lib/services/proxy.d.ts +9 -8
- package/lib/services/proxy.js +65 -36
- package/lib/services/proxy.js.map +1 -1
- package/lib/services/proxy.spec.js +28 -2
- package/lib/services/proxy.spec.js.map +1 -1
- package/lib/services/resource.d.ts +3 -3
- package/lib/services/resource.js +4 -3
- package/lib/services/resource.js.map +1 -1
- package/lib/services/resource.spec.js +3 -3
- package/lib/services/resource.spec.js.map +1 -1
- package/lib/services/service.d.ts +10 -13
- package/lib/services/service.js +29 -13
- package/lib/services/service.js.map +1 -1
- package/lib/services/service.spec.js +49 -11
- package/lib/services/service.spec.js.map +1 -1
- package/lib/services/version.d.ts +2 -2
- package/lib/services/version.js.map +1 -1
- package/lib/stores/aggregator.js +1 -0
- package/lib/stores/aggregator.js.map +1 -1
- package/lib/stores/aliasstore.d.ts +2 -2
- package/lib/stores/aliasstore.js +15 -4
- package/lib/stores/aliasstore.js.map +1 -1
- package/lib/stores/aliasstore.spec.js +4 -2
- package/lib/stores/aliasstore.spec.js.map +1 -1
- package/lib/stores/file.d.ts +5 -2
- package/lib/stores/file.js +11 -8
- package/lib/stores/file.js.map +1 -1
- package/lib/stores/file.spec.js +21 -34
- package/lib/stores/file.spec.js.map +1 -1
- package/lib/stores/mapper.d.ts +4 -2
- package/lib/stores/mapper.js +18 -11
- package/lib/stores/mapper.js.map +1 -1
- package/lib/stores/mapper.spec.js +6 -3
- package/lib/stores/mapper.spec.js.map +1 -1
- package/lib/stores/memory.d.ts +5 -2
- package/lib/stores/memory.js +11 -9
- package/lib/stores/memory.js.map +1 -1
- package/lib/stores/memory.spec.d.ts +3 -0
- package/lib/stores/memory.spec.js +100 -11
- package/lib/stores/memory.spec.js.map +1 -1
- package/lib/stores/store.d.ts +177 -87
- package/lib/stores/store.js +312 -141
- package/lib/stores/store.js.map +1 -1
- package/lib/stores/store.spec.d.ts +2 -2
- package/lib/stores/store.spec.js +54 -38
- package/lib/stores/store.spec.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLLexer.d.ts +14 -13
- package/lib/stores/webdaql/WebdaQLLexer.js +121 -112
- package/lib/stores/webdaql/WebdaQLLexer.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLParserLexer.d.ts +14 -13
- package/lib/stores/webdaql/WebdaQLParserLexer.js +121 -112
- package/lib/stores/webdaql/WebdaQLParserLexer.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLParserListener.d.ts +15 -3
- package/lib/stores/webdaql/WebdaQLParserParser.d.ts +23 -13
- package/lib/stores/webdaql/WebdaQLParserParser.js +149 -94
- package/lib/stores/webdaql/WebdaQLParserParser.js.map +1 -1
- package/lib/stores/webdaql/WebdaQLParserVisitor.d.ts +9 -2
- package/lib/stores/webdaql/query.d.ts +6 -2
- package/lib/stores/webdaql/query.js +14 -1
- package/lib/stores/webdaql/query.js.map +1 -1
- package/lib/stores/webdaql/query.spec.js +10 -1
- package/lib/stores/webdaql/query.spec.js.map +1 -1
- package/lib/test.d.ts +48 -19
- package/lib/test.js +171 -63
- package/lib/test.js.map +1 -1
- package/lib/unpackedapplication.d.ts +5 -0
- package/lib/unpackedapplication.js +58 -10
- package/lib/unpackedapplication.js.map +1 -1
- package/lib/utils/context.d.ts +76 -29
- package/lib/utils/context.js +91 -55
- package/lib/utils/context.js.map +1 -1
- package/lib/utils/context.spec.d.ts +9 -1
- package/lib/utils/context.spec.js +73 -8
- package/lib/utils/context.spec.js.map +1 -1
- package/lib/utils/cookie.d.ts +4 -5
- package/lib/utils/cookie.js +1 -2
- package/lib/utils/cookie.js.map +1 -1
- package/lib/utils/cookie.spec.js +5 -3
- package/lib/utils/cookie.spec.js.map +1 -1
- package/lib/utils/httpcontext.spec.js +9 -3
- package/lib/utils/httpcontext.spec.js.map +1 -1
- package/lib/utils/serializers.d.ts +46 -17
- package/lib/utils/serializers.js +116 -2
- package/lib/utils/serializers.js.map +1 -1
- package/lib/utils/serializers.spec.js +84 -20
- package/lib/utils/serializers.spec.js.map +1 -1
- package/lib/utils/session.d.ts +14 -8
- package/lib/utils/session.js +14 -3
- package/lib/utils/session.js.map +1 -1
- package/lib/utils/session.spec.js +6 -1
- package/lib/utils/session.spec.js.map +1 -1
- package/package.json +16 -10
- package/test/cachedapp/webda.config.json +6 -1
- package/test/config-cached.json +5 -0
- package/test/config-file-missing-file.json +5 -7
- package/test/config-file-no-reload.json +5 -7
- package/test/config-file-reload.json +5 -7
- package/test/config-kube-reload.json +5 -11
- package/test/config-reload.json +2 -4
- package/test/config.json +12 -2
- package/test/moddas/voidstore.js +1 -1
- package/test/models/ident.js +6 -4
- package/test/models/task.js +4 -4
- package/webda.module.json +1587 -1266
package/lib/errors.js
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
export var WebdaError;
|
|
2
|
+
(function (WebdaError) {
|
|
3
|
+
/**
|
|
4
|
+
* Error with a code
|
|
5
|
+
*/
|
|
6
|
+
class CodeError extends Error {
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param code
|
|
10
|
+
* @param message
|
|
11
|
+
*/
|
|
12
|
+
constructor(code, message) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.code = code;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Return error code
|
|
18
|
+
*/
|
|
19
|
+
getCode() {
|
|
20
|
+
return this.code;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Http response code
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
getResponseCode() {
|
|
27
|
+
return 500;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
WebdaError.CodeError = CodeError;
|
|
31
|
+
class HttpError extends CodeError {
|
|
32
|
+
constructor(message, statusCode = 500) {
|
|
33
|
+
super("", message);
|
|
34
|
+
this.statusCode = statusCode;
|
|
35
|
+
this.code = this.constructor.name.replace(/([a-z])([A-Z])/g, "$1_$2").toUpperCase();
|
|
36
|
+
}
|
|
37
|
+
getResponseCode() {
|
|
38
|
+
return this.statusCode;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
WebdaError.HttpError = HttpError;
|
|
42
|
+
class Unauthorized extends HttpError {
|
|
43
|
+
constructor(message) {
|
|
44
|
+
super(message, 401);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
WebdaError.Unauthorized = Unauthorized;
|
|
48
|
+
class Forbidden extends HttpError {
|
|
49
|
+
constructor(message) {
|
|
50
|
+
super(message, 403);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
WebdaError.Forbidden = Forbidden;
|
|
54
|
+
class NotFound extends HttpError {
|
|
55
|
+
constructor(message) {
|
|
56
|
+
super(message, 404);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
WebdaError.NotFound = NotFound;
|
|
60
|
+
class BadRequest extends HttpError {
|
|
61
|
+
constructor(message) {
|
|
62
|
+
super(message, 400);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
WebdaError.BadRequest = BadRequest;
|
|
66
|
+
class Conflict extends HttpError {
|
|
67
|
+
constructor(message) {
|
|
68
|
+
super(message, 409);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
WebdaError.Conflict = Conflict;
|
|
72
|
+
class NotImplemented extends HttpError {
|
|
73
|
+
constructor(message) {
|
|
74
|
+
super(message, 501);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
WebdaError.NotImplemented = NotImplemented;
|
|
78
|
+
class ServiceUnavailable extends HttpError {
|
|
79
|
+
constructor(message) {
|
|
80
|
+
super(message, 503);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
WebdaError.ServiceUnavailable = ServiceUnavailable;
|
|
84
|
+
class TooManyRequests extends HttpError {
|
|
85
|
+
constructor(message) {
|
|
86
|
+
super(message, 429);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
WebdaError.TooManyRequests = TooManyRequests;
|
|
90
|
+
class Gone extends HttpError {
|
|
91
|
+
constructor(message) {
|
|
92
|
+
super(message, 410);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
WebdaError.Gone = Gone;
|
|
96
|
+
class PreconditionFailed extends HttpError {
|
|
97
|
+
constructor(message) {
|
|
98
|
+
super(message, 412);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
WebdaError.PreconditionFailed = PreconditionFailed;
|
|
102
|
+
/**
|
|
103
|
+
* Can be used to redirect the user
|
|
104
|
+
*/
|
|
105
|
+
class Redirect extends HttpError {
|
|
106
|
+
constructor(message, location) {
|
|
107
|
+
super(message, 302);
|
|
108
|
+
this.location = location;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
WebdaError.Redirect = Redirect;
|
|
112
|
+
})(WebdaError || (WebdaError = {}));
|
|
113
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { suite, test } from "@testdeck/mocha";
|
|
8
|
+
import * as assert from "assert";
|
|
9
|
+
import { WebdaError } from "./errors.js";
|
|
10
|
+
let ErrorsTest = class ErrorsTest {
|
|
11
|
+
cov() {
|
|
12
|
+
assert.strictEqual(new WebdaError.BadRequest("test").getResponseCode(), 400);
|
|
13
|
+
assert.strictEqual(new WebdaError.CodeError("PLOP", "test").getResponseCode(), 500);
|
|
14
|
+
assert.rejects(() => {
|
|
15
|
+
throw new WebdaError.BadRequest("test");
|
|
16
|
+
});
|
|
17
|
+
assert.rejects(() => {
|
|
18
|
+
throw new WebdaError.NotImplemented("test");
|
|
19
|
+
});
|
|
20
|
+
assert.rejects(() => {
|
|
21
|
+
throw new WebdaError.ServiceUnavailable("test");
|
|
22
|
+
});
|
|
23
|
+
assert.strictEqual(new WebdaError.HttpError("test").code, "HTTP_ERROR");
|
|
24
|
+
new WebdaError.Redirect("test", "http://test.com");
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
__decorate([
|
|
28
|
+
test
|
|
29
|
+
], ErrorsTest.prototype, "cov", null);
|
|
30
|
+
ErrorsTest = __decorate([
|
|
31
|
+
suite
|
|
32
|
+
], ErrorsTest);
|
|
33
|
+
//# sourceMappingURL=errors.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.spec.js","sourceRoot":"","sources":["../src/errors.spec.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,IAAM,UAAU,GAAhB,MAAM,UAAU;IAEd,GAAG;QACD,MAAM,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7E,MAAM,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,eAAe,EAAE,EAAE,GAAG,CAAC,CAAC;QACpF,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,IAAI,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACxE,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AAfC;IADC,IAAI;qCAeJ;AAhBG,UAAU;IADf,KAAK;GACA,UAAU,CAiBf"}
|
package/lib/index.d.ts
CHANGED
|
@@ -5,11 +5,13 @@ export { CacheService };
|
|
|
5
5
|
export * from "./application.js";
|
|
6
6
|
export * from "./unpackedapplication.js";
|
|
7
7
|
export * from "./core.js";
|
|
8
|
+
export * from "./errors.js";
|
|
8
9
|
export * from "./models/aclmodel.js";
|
|
9
10
|
export * from "./models/coremodel.js";
|
|
10
11
|
export * from "./models/deployment.js";
|
|
11
12
|
export * from "./models/ident.js";
|
|
12
13
|
export * from "./models/ownermodel.js";
|
|
14
|
+
export * from "./models/relations.js";
|
|
13
15
|
export * from "./models/rolemodel.js";
|
|
14
16
|
export * from "./models/user.js";
|
|
15
17
|
export * from "./queues/filequeue.js";
|
|
@@ -24,6 +26,7 @@ export * from "./services/configuration.js";
|
|
|
24
26
|
export * from "./services/cron.js";
|
|
25
27
|
export * from "./services/cryptoservice.js";
|
|
26
28
|
export * from "./services/debugmailer.js";
|
|
29
|
+
export * from "./services/domainservice.js";
|
|
27
30
|
export * from "./services/echo.js";
|
|
28
31
|
export * from "./services/filebinary.js";
|
|
29
32
|
export * from "./services/fileconfiguration.js";
|
package/lib/index.js
CHANGED
|
@@ -7,12 +7,14 @@ export { CacheService };
|
|
|
7
7
|
export * from "./application.js";
|
|
8
8
|
export * from "./unpackedapplication.js";
|
|
9
9
|
export * from "./core.js";
|
|
10
|
+
export * from "./errors.js";
|
|
10
11
|
// Models
|
|
11
12
|
export * from "./models/aclmodel.js";
|
|
12
13
|
export * from "./models/coremodel.js";
|
|
13
14
|
export * from "./models/deployment.js";
|
|
14
15
|
export * from "./models/ident.js";
|
|
15
16
|
export * from "./models/ownermodel.js";
|
|
17
|
+
export * from "./models/relations.js";
|
|
16
18
|
export * from "./models/rolemodel.js";
|
|
17
19
|
export * from "./models/user.js";
|
|
18
20
|
// Queues
|
|
@@ -29,6 +31,7 @@ export * from "./services/configuration.js";
|
|
|
29
31
|
export * from "./services/cron.js";
|
|
30
32
|
export * from "./services/cryptoservice.js";
|
|
31
33
|
export * from "./services/debugmailer.js";
|
|
34
|
+
export * from "./services/domainservice.js";
|
|
32
35
|
export * from "./services/echo.js";
|
|
33
36
|
export * from "./services/filebinary.js";
|
|
34
37
|
export * from "./services/fileconfiguration.js";
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,sFAAsF;AACtF,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,sFAAsF;AACtF,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,MAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AAEzB,SAAS;AACT,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAE9B,SAAS;AACT,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAEtC,WAAW;AACX,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,SAAS;AACT,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAE/B,QAAQ;AACR,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,wBAAwB,CAAC"}
|
package/lib/models/aclmodel.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ModelAction, OperationContext, User, WebContext } from "../index.js";
|
|
2
2
|
import { CoreModel } from "./coremodel.js";
|
|
3
3
|
export type Acl = {
|
|
4
4
|
[key: string]: string;
|
|
@@ -20,7 +20,7 @@ export default class AclModel extends CoreModel {
|
|
|
20
20
|
/**
|
|
21
21
|
* Contains permissions
|
|
22
22
|
*/
|
|
23
|
-
|
|
23
|
+
protected _permissions?: string[];
|
|
24
24
|
/**
|
|
25
25
|
* Add acls actions
|
|
26
26
|
* @returns
|
|
@@ -51,7 +51,7 @@ export default class AclModel extends CoreModel {
|
|
|
51
51
|
* @param ctx
|
|
52
52
|
* @returns
|
|
53
53
|
*/
|
|
54
|
-
_acl(ctx:
|
|
54
|
+
_acl(ctx: WebContext): Promise<void>;
|
|
55
55
|
/**
|
|
56
56
|
* GET
|
|
57
57
|
* @param ctx
|
|
@@ -70,6 +70,6 @@ export default class AclModel extends CoreModel {
|
|
|
70
70
|
*/
|
|
71
71
|
getPermissions(ctx: OperationContext, user?: User): Promise<string[]>;
|
|
72
72
|
hasPermission(ctx: OperationContext, user: User, action: string): Promise<boolean>;
|
|
73
|
-
canAct(ctx: OperationContext, action: string): Promise<
|
|
73
|
+
canAct(ctx: OperationContext, action: string): Promise<string | boolean>;
|
|
74
74
|
}
|
|
75
75
|
export { AclModel };
|
package/lib/models/aclmodel.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WebdaError } from "../index.js";
|
|
1
2
|
import { CoreModel } from "./coremodel.js";
|
|
2
3
|
/**
|
|
3
4
|
* Object that contains ACL to define its own permissions
|
|
@@ -30,7 +31,7 @@ export default class AclModel extends CoreModel {
|
|
|
30
31
|
async _onSave() {
|
|
31
32
|
await super._onSave();
|
|
32
33
|
this._creator = this.getContext().getCurrentUserId();
|
|
33
|
-
if (Object.keys(this.__acl).length === 0) {
|
|
34
|
+
if (Object.keys(this.__acl).length === 0 && this._creator) {
|
|
34
35
|
this.__acl[this._creator] = "all";
|
|
35
36
|
}
|
|
36
37
|
}
|
|
@@ -92,7 +93,7 @@ export default class AclModel extends CoreModel {
|
|
|
92
93
|
let acl = await ctx.getInput();
|
|
93
94
|
// This looks like a bad request
|
|
94
95
|
if (acl.raw) {
|
|
95
|
-
throw
|
|
96
|
+
throw new WebdaError.BadRequest("ACL should have raw field");
|
|
96
97
|
}
|
|
97
98
|
this.__acl = acl;
|
|
98
99
|
await this.save();
|
|
@@ -107,7 +108,7 @@ export default class AclModel extends CoreModel {
|
|
|
107
108
|
groups = [];
|
|
108
109
|
}
|
|
109
110
|
groups = groups.slice(0);
|
|
110
|
-
groups.push(user.
|
|
111
|
+
groups.push(user.getUuid());
|
|
111
112
|
return groups;
|
|
112
113
|
}
|
|
113
114
|
/**
|
|
@@ -141,14 +142,17 @@ export default class AclModel extends CoreModel {
|
|
|
141
142
|
return false;
|
|
142
143
|
}
|
|
143
144
|
async canAct(ctx, action) {
|
|
145
|
+
if (action === "create" && ctx.getCurrentUserId()) {
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
144
148
|
if (!this.getAcl() || !ctx.getCurrentUserId()) {
|
|
145
|
-
|
|
149
|
+
return "No ACL or user";
|
|
146
150
|
}
|
|
147
151
|
let user = await ctx.getCurrentUser();
|
|
148
152
|
if (await this.hasPermission(ctx, user, action)) {
|
|
149
|
-
return
|
|
153
|
+
return true;
|
|
150
154
|
}
|
|
151
|
-
|
|
155
|
+
return "No permission";
|
|
152
156
|
}
|
|
153
157
|
}
|
|
154
158
|
export { AclModel };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aclmodel.js","sourceRoot":"","sources":["../../src/models/aclmodel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aclmodel.js","sourceRoot":"","sources":["../../src/models/aclmodel.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,22 +6,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { suite, test } from "@testdeck/mocha";
|
|
8
8
|
import * as assert from "assert";
|
|
9
|
-
import { AclModel, Core, HttpContext,
|
|
9
|
+
import { AclModel, Core, HttpContext, SimpleUser } from "../index.js";
|
|
10
10
|
import { TestApplication } from "../test.js";
|
|
11
11
|
import { getCommonJS } from "../utils/esm.js";
|
|
12
12
|
const { __filename, __dirname } = getCommonJS(import.meta.url);
|
|
13
13
|
let AclModelTest = class AclModelTest {
|
|
14
14
|
async before() {
|
|
15
|
-
let app = new TestApplication(
|
|
15
|
+
let app = new TestApplication();
|
|
16
16
|
await app.load();
|
|
17
17
|
this._webda = new Core(app);
|
|
18
18
|
await this._webda.init();
|
|
19
|
-
this._ctx = await this._webda.
|
|
19
|
+
this._ctx = await this._webda.newWebContext(new HttpContext("test.webda.io", "GET", "/"));
|
|
20
20
|
this._session = this._ctx.getSession();
|
|
21
21
|
this._session.login("user-uid", "none");
|
|
22
22
|
this.model = new AclModel().getProxy();
|
|
23
|
-
this._user = new
|
|
24
|
-
this._user.
|
|
23
|
+
this._user = new SimpleUser();
|
|
24
|
+
this._user.setUuid("user-uid");
|
|
25
25
|
this._user.addGroup("gip-123");
|
|
26
26
|
// @ts-ignore
|
|
27
27
|
this._ctx.getCurrentUser = async () => {
|
|
@@ -29,15 +29,15 @@ let AclModelTest = class AclModelTest {
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
async get() {
|
|
32
|
-
await assert.rejects(this.model.
|
|
32
|
+
await assert.rejects(() => this.model.checkAct(this._ctx, "get"));
|
|
33
33
|
this.model.__acl["gip-123"] = "get";
|
|
34
|
-
assert.strictEqual(await this.model.canAct(this._ctx, "get"),
|
|
34
|
+
assert.strictEqual(await this.model.canAct(this._ctx, "get"), true);
|
|
35
35
|
}
|
|
36
36
|
async multipermissions() {
|
|
37
|
-
await assert.rejects(this.model.
|
|
37
|
+
await assert.rejects(() => this.model.checkAct(this._ctx, "action"));
|
|
38
38
|
this.model.__acl["gip-123"] = "get,action";
|
|
39
|
-
assert.strictEqual(await this.model.canAct(this._ctx, "get"),
|
|
40
|
-
assert.strictEqual(await this.model.canAct(this._ctx, "action"),
|
|
39
|
+
assert.strictEqual(await this.model.canAct(this._ctx, "get"), true);
|
|
40
|
+
assert.strictEqual(await this.model.canAct(this._ctx, "action"), true);
|
|
41
41
|
assert.deepStrictEqual(await this.model.getPermissions(this._ctx), ["get", "action"]);
|
|
42
42
|
await this.model._onGet();
|
|
43
43
|
// @ts-ignore
|
|
@@ -48,41 +48,41 @@ let AclModelTest = class AclModelTest {
|
|
|
48
48
|
assert.deepStrictEqual(this.model._permissions, ["get", "action"]);
|
|
49
49
|
}
|
|
50
50
|
async multigroups() {
|
|
51
|
-
await assert.rejects(this.model.
|
|
51
|
+
await assert.rejects(() => this.model.checkAct(this._ctx, "action"));
|
|
52
52
|
this.model.__acl["gip-124"] = "get,action";
|
|
53
53
|
this.model.__acl["gip-123"] = "get";
|
|
54
54
|
this.model.__acl["gip-122"] = "get,action";
|
|
55
|
-
assert.strictEqual(await this.model.canAct(this._ctx, "get"),
|
|
56
|
-
await assert.rejects(this.model.
|
|
55
|
+
assert.strictEqual(await this.model.canAct(this._ctx, "get"), true);
|
|
56
|
+
await assert.rejects(() => this.model.checkAct(this._ctx, "action"));
|
|
57
57
|
// @ts-ignore
|
|
58
58
|
this._user._groups = undefined;
|
|
59
|
-
await assert.rejects(this.model.
|
|
59
|
+
await assert.rejects(() => this.model.checkAct(this._ctx, "get"));
|
|
60
60
|
}
|
|
61
61
|
async userid() {
|
|
62
|
-
await assert.rejects(this.model.
|
|
62
|
+
await assert.rejects(() => this.model.checkAct(this._ctx, "action"));
|
|
63
63
|
this.model.__acl["user-uid"] = "get";
|
|
64
64
|
this.model.__acl["gip-122"] = "get,action";
|
|
65
|
-
assert.strictEqual(await this.model.canAct(this._ctx, "get"),
|
|
66
|
-
await assert.rejects(this.model.
|
|
65
|
+
assert.strictEqual(await this.model.canAct(this._ctx, "get"), true);
|
|
66
|
+
await assert.rejects(() => this.model.checkAct(this._ctx, "action"));
|
|
67
67
|
this._ctx.getCurrentUserId = () => {
|
|
68
68
|
return undefined;
|
|
69
69
|
};
|
|
70
|
-
await assert.rejects(this.model.
|
|
70
|
+
await assert.rejects(() => this.model.checkAct(this._ctx, "get"), (err) => err.getResponseCode() === 403);
|
|
71
71
|
this._ctx.getCurrentUserId = () => {
|
|
72
72
|
return "123";
|
|
73
73
|
};
|
|
74
74
|
this.model.setAcl(undefined);
|
|
75
|
-
await assert.rejects(this.model.
|
|
75
|
+
await assert.rejects(() => this.model.checkAct(this._ctx, "get"), (err) => err.getResponseCode() === 403);
|
|
76
76
|
}
|
|
77
77
|
async all() {
|
|
78
|
-
await assert.rejects(this.model.
|
|
78
|
+
await assert.rejects(() => this.model.checkAct(this._ctx, "action"));
|
|
79
79
|
this.model.__acl["gip-124"] = "get,action";
|
|
80
80
|
this.model.__acl["user-uid"] = "all";
|
|
81
81
|
this.model.__acl["gip-122"] = "get,action";
|
|
82
|
-
assert.strictEqual(await this.model.canAct(this._ctx, "get"),
|
|
83
|
-
assert.strictEqual(await this.model.canAct(this._ctx, "action"),
|
|
84
|
-
assert.strictEqual(await this.model.canAct(this._ctx, "delete"),
|
|
85
|
-
assert.strictEqual(await this.model.canAct(this._ctx, "whatever"),
|
|
82
|
+
assert.strictEqual(await this.model.canAct(this._ctx, "get"), true);
|
|
83
|
+
assert.strictEqual(await this.model.canAct(this._ctx, "action"), true);
|
|
84
|
+
assert.strictEqual(await this.model.canAct(this._ctx, "delete"), true);
|
|
85
|
+
assert.strictEqual(await this.model.canAct(this._ctx, "whatever"), true);
|
|
86
86
|
}
|
|
87
87
|
async httpAcls() {
|
|
88
88
|
// @ts-ignore
|
|
@@ -130,6 +130,12 @@ let AclModelTest = class AclModelTest {
|
|
|
130
130
|
]
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
|
+
async canActCreate() {
|
|
134
|
+
this._ctx.getSession().userId = undefined;
|
|
135
|
+
assert.strictEqual(await this.model.canAct(this._ctx, "create"), "No ACL or user");
|
|
136
|
+
this._ctx.getSession().login("user-uid", "ident-uid");
|
|
137
|
+
assert.strictEqual(await this.model.canAct(this._ctx, "create"), true);
|
|
138
|
+
}
|
|
133
139
|
async onSave() {
|
|
134
140
|
this.model.setContext(this._ctx);
|
|
135
141
|
await this.model._onSave();
|
|
@@ -155,6 +161,9 @@ __decorate([
|
|
|
155
161
|
__decorate([
|
|
156
162
|
test
|
|
157
163
|
], AclModelTest.prototype, "httpAcls", null);
|
|
164
|
+
__decorate([
|
|
165
|
+
test
|
|
166
|
+
], AclModelTest.prototype, "canActCreate", null);
|
|
158
167
|
__decorate([
|
|
159
168
|
test
|
|
160
169
|
], AclModelTest.prototype, "onSave", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aclmodel.spec.js","sourceRoot":"","sources":["../../src/models/aclmodel.spec.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"aclmodel.spec.js","sourceRoot":"","sources":["../../src/models/aclmodel.spec.ts"],"names":[],"mappings":"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"}
|