@webda/core 4.0.0-beta.3 → 4.0.0-beta.5

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.
Files changed (158) hide show
  1. package/lib/application/application.d.ts +31 -0
  2. package/lib/application/application.d.ts.map +1 -1
  3. package/lib/application/application.js +55 -2
  4. package/lib/application/application.js.map +1 -1
  5. package/lib/application/deployment.d.ts +93 -0
  6. package/lib/application/deployment.d.ts.map +1 -0
  7. package/lib/application/deployment.js +99 -0
  8. package/lib/application/deployment.js.map +1 -0
  9. package/lib/application/unpackedapplication.d.ts.map +1 -1
  10. package/lib/application/unpackedapplication.js +9 -1
  11. package/lib/application/unpackedapplication.js.map +1 -1
  12. package/lib/bin/cli.d.ts +36 -1
  13. package/lib/bin/cli.d.ts.map +1 -1
  14. package/lib/bin/cli.js +108 -2
  15. package/lib/bin/cli.js.map +1 -1
  16. package/lib/contexts/execution.js +1 -1
  17. package/lib/contexts/execution.js.map +1 -1
  18. package/lib/contexts/operationcontext.d.ts +3 -0
  19. package/lib/contexts/operationcontext.d.ts.map +1 -1
  20. package/lib/contexts/operationcontext.js +6 -3
  21. package/lib/contexts/operationcontext.js.map +1 -1
  22. package/lib/core/core.js +1 -1
  23. package/lib/core/core.js.map +1 -1
  24. package/lib/core/hooks.d.ts +22 -0
  25. package/lib/core/hooks.d.ts.map +1 -1
  26. package/lib/core/hooks.js +24 -0
  27. package/lib/core/hooks.js.map +1 -1
  28. package/lib/core/operations.d.ts.map +1 -1
  29. package/lib/core/operations.js +13 -11
  30. package/lib/core/operations.js.map +1 -1
  31. package/lib/deployers/deployer.d.ts +157 -0
  32. package/lib/deployers/deployer.d.ts.map +1 -0
  33. package/lib/deployers/deployer.js +81 -0
  34. package/lib/deployers/deployer.js.map +1 -0
  35. package/lib/deployers/git.d.ts +27 -0
  36. package/lib/deployers/git.d.ts.map +1 -0
  37. package/lib/deployers/git.js +66 -0
  38. package/lib/deployers/git.js.map +1 -0
  39. package/lib/deployers/packager.d.ts +85 -0
  40. package/lib/deployers/packager.d.ts.map +1 -0
  41. package/lib/deployers/packager.js +259 -0
  42. package/lib/deployers/packager.js.map +1 -0
  43. package/lib/index.d.ts +10 -4
  44. package/lib/index.d.ts.map +1 -1
  45. package/lib/index.js +10 -4
  46. package/lib/index.js.map +1 -1
  47. package/lib/models/aclmodel.d.ts +32 -5
  48. package/lib/models/aclmodel.d.ts.map +1 -1
  49. package/lib/models/aclmodel.js +34 -9
  50. package/lib/models/aclmodel.js.map +1 -1
  51. package/lib/models/coremodel.model.d.ts.map +1 -1
  52. package/lib/models/coremodel.model.js.map +1 -1
  53. package/lib/models/decorator.d.ts +4 -0
  54. package/lib/models/decorator.d.ts.map +1 -1
  55. package/lib/models/decorator.js +4 -0
  56. package/lib/models/decorator.js.map +1 -1
  57. package/lib/models/deployment.d.ts +2 -21
  58. package/lib/models/deployment.d.ts.map +1 -1
  59. package/lib/models/encrypted.model.d.ts +46 -0
  60. package/lib/models/encrypted.model.d.ts.map +1 -0
  61. package/lib/models/encrypted.model.js +87 -0
  62. package/lib/models/encrypted.model.js.map +1 -0
  63. package/lib/models/ident.model.d.ts +103 -64
  64. package/lib/models/ident.model.d.ts.map +1 -1
  65. package/lib/models/ident.model.js +168 -76
  66. package/lib/models/ident.model.js.map +1 -1
  67. package/lib/models/ownermodel.model.d.ts +25 -3
  68. package/lib/models/ownermodel.model.d.ts.map +1 -1
  69. package/lib/models/ownermodel.model.js +46 -10
  70. package/lib/models/ownermodel.model.js.map +1 -1
  71. package/lib/models/password.model.d.ts +78 -0
  72. package/lib/models/password.model.d.ts.map +1 -0
  73. package/lib/models/password.model.js +171 -0
  74. package/lib/models/password.model.js.map +1 -0
  75. package/lib/models/permissions.d.ts +236 -0
  76. package/lib/models/permissions.d.ts.map +1 -0
  77. package/lib/models/permissions.js +495 -0
  78. package/lib/models/permissions.js.map +1 -0
  79. package/lib/models/refreshtoken.model.d.ts +30 -0
  80. package/lib/models/refreshtoken.model.d.ts.map +1 -0
  81. package/lib/models/refreshtoken.model.js +29 -0
  82. package/lib/models/refreshtoken.model.js.map +1 -0
  83. package/lib/models/registry.model.d.ts.map +1 -1
  84. package/lib/models/registry.model.js.map +1 -1
  85. package/lib/models/rolemodel.model.d.ts.map +1 -1
  86. package/lib/models/rolemodel.model.js +1 -2
  87. package/lib/models/rolemodel.model.js.map +1 -1
  88. package/lib/models/simpleuser.model.d.ts.map +1 -1
  89. package/lib/models/simpleuser.model.js +2 -1
  90. package/lib/models/simpleuser.model.js.map +1 -1
  91. package/lib/models/user.model.d.ts +33 -21
  92. package/lib/models/user.model.d.ts.map +1 -1
  93. package/lib/models/user.model.js +81 -26
  94. package/lib/models/user.model.js.map +1 -1
  95. package/lib/rest/restoperationstransport.service.d.ts.map +1 -1
  96. package/lib/rest/restoperationstransport.service.js +7 -5
  97. package/lib/rest/restoperationstransport.service.js.map +1 -1
  98. package/lib/services/audit.model.d.ts +2 -2
  99. package/lib/services/audit.model.d.ts.map +1 -1
  100. package/lib/services/audit.model.js +16 -6
  101. package/lib/services/audit.model.js.map +1 -1
  102. package/lib/services/binary.service.d.ts +42 -4
  103. package/lib/services/binary.service.d.ts.map +1 -1
  104. package/lib/services/binary.service.js +33 -13
  105. package/lib/services/binary.service.js.map +1 -1
  106. package/lib/services/domainservice.service.d.ts +111 -1
  107. package/lib/services/domainservice.service.d.ts.map +1 -1
  108. package/lib/services/domainservice.service.js +303 -50
  109. package/lib/services/domainservice.service.js.map +1 -1
  110. package/lib/services/iauthentication.d.ts +196 -3
  111. package/lib/services/iauthentication.d.ts.map +1 -1
  112. package/lib/services/servicecommands.d.ts.map +1 -1
  113. package/lib/services/servicecommands.js +17 -11
  114. package/lib/services/servicecommands.js.map +1 -1
  115. package/lib/services/token.service.d.ts +95 -0
  116. package/lib/services/token.service.d.ts.map +1 -0
  117. package/lib/services/token.service.js +182 -0
  118. package/lib/services/token.service.js.map +1 -0
  119. package/lib/session/manager.model.d.ts +16 -0
  120. package/lib/session/manager.model.d.ts.map +1 -1
  121. package/lib/session/manager.model.js +58 -1
  122. package/lib/session/manager.model.js.map +1 -1
  123. package/lib/session/session.d.ts +44 -1
  124. package/lib/session/session.d.ts.map +1 -1
  125. package/lib/session/session.js +51 -2
  126. package/lib/session/session.js.map +1 -1
  127. package/lib/stores/memory.service.d.ts.map +1 -1
  128. package/lib/stores/memory.service.js +4 -3
  129. package/lib/stores/memory.service.js.map +1 -1
  130. package/lib/templates/templates.d.ts +8 -0
  131. package/lib/templates/templates.d.ts.map +1 -1
  132. package/lib/templates/templates.js +10 -1
  133. package/lib/templates/templates.js.map +1 -1
  134. package/lib/test/behavior-fixture.model.d.ts +30 -0
  135. package/lib/test/behavior-fixture.model.d.ts.map +1 -0
  136. package/lib/test/behavior-fixture.model.js +63 -0
  137. package/lib/test/behavior-fixture.model.js.map +1 -0
  138. package/lib/test/legacyident.fixture.model.d.ts +98 -0
  139. package/lib/test/legacyident.fixture.model.d.ts.map +1 -0
  140. package/lib/test/legacyident.fixture.model.js +125 -0
  141. package/lib/test/legacyident.fixture.model.js.map +1 -0
  142. package/lib/test/objects.d.ts +2 -2
  143. package/lib/test/objects.d.ts.map +1 -1
  144. package/lib/test/objects.js +2 -2
  145. package/lib/test/objects.js.map +1 -1
  146. package/package.json +32 -11
  147. package/test/config-cached.json +2 -1
  148. package/test/config.json +3 -1
  149. package/test/my-cnf.json +1 -1
  150. package/webda.module.json +656 -390
  151. package/lib/services/authentication.service.d.ts +0 -442
  152. package/lib/services/authentication.service.d.ts.map +0 -1
  153. package/lib/services/authentication.service.js +0 -932
  154. package/lib/services/authentication.service.js.map +0 -1
  155. package/lib/services/oauth.d.ts +0 -250
  156. package/lib/services/oauth.d.ts.map +0 -1
  157. package/lib/services/oauth.js +0 -405
  158. package/lib/services/oauth.js.map +0 -1
@@ -1,405 +0,0 @@
1
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
2
- var useValue = arguments.length > 2;
3
- for (var i = 0; i < initializers.length; i++) {
4
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
5
- }
6
- return useValue ? value : void 0;
7
- };
8
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
9
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
10
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
11
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
12
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
13
- var _, done = false;
14
- for (var i = decorators.length - 1; i >= 0; i--) {
15
- var context = {};
16
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
17
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
18
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
19
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
20
- if (kind === "accessor") {
21
- if (result === void 0) continue;
22
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
23
- if (_ = accept(result.get)) descriptor.get = _;
24
- if (_ = accept(result.set)) descriptor.set = _;
25
- if (_ = accept(result.init)) initializers.unshift(_);
26
- }
27
- else if (_ = accept(result)) {
28
- if (kind === "field") initializers.unshift(_);
29
- else descriptor[key] = _;
30
- }
31
- }
32
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
33
- done = true;
34
- };
35
- import * as WebdaError from "../errors/errors.js";
36
- import { Service } from "./service.js";
37
- import { getUuid } from "@webda/utils";
38
- import { Route } from "../rest/irest.js";
39
- import { Counter } from "../metrics/metrics.js";
40
- import { RegExpStringValidator } from "@webda/utils";
41
- import { ServiceParameters } from "../services/serviceparameters.js";
42
- import { useService } from "../core/hooks.js";
43
- /** Parameters for OAuth services including client credentials, scopes, and redirect URIs */
44
- export class OAuthServiceParameters extends ServiceParameters {
45
- /**
46
- * Scope to request on OAuth flow
47
- *
48
- * @defaut ["email"]
49
- */
50
- scope;
51
- /**
52
- * If set to true it will add a ${url}/scope
53
- * So client can anticipate the requested scope
54
- *
55
- * This is useful when using the client api to generate
56
- * token. This way the service can request the wanted scope
57
- *
58
- * @default false
59
- */
60
- exposeScope;
61
- /**
62
- * List of URIs authorized for redirect post authorization
63
- *
64
- * @default []
65
- */
66
- authorized_uris;
67
- /**
68
- * Default redirect_uri
69
- *
70
- * @default ${url}/callback
71
- */
72
- redirect_uri;
73
- /**
74
- * Allow direct connection without a referer
75
- *
76
- * @default false
77
- */
78
- no_referer;
79
- /**
80
- * Name of the authentication service to use if exist
81
- * @default Authentication
82
- */
83
- authenticationService;
84
- /**
85
- * Load parameters with defaults for scopes, auth service, and URI settings
86
- * @param params - the service parameters
87
- * @returns the result
88
- */
89
- load(params) {
90
- super.load(params);
91
- this.scope ??= ["email"];
92
- this.exposeScope ??= false;
93
- this.authenticationService ??= "Authentication";
94
- this.authorized_uris ??= [];
95
- this.no_referer ??= false;
96
- return this;
97
- }
98
- }
99
- /**
100
- * OAuth service implementing the default OAuth workflow
101
- * It is abstract as it does not manage any provider as is
102
- */
103
- let OAuthService = (() => {
104
- let _classSuper = Service;
105
- let _instanceExtraInitializers = [];
106
- let __redirect_decorators;
107
- return class OAuthService extends _classSuper {
108
- static {
109
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
110
- __redirect_decorators = [Route(".{?redirect?}", ["GET"], {
111
- get: {
112
- description: "Log with a ${name} account",
113
- summary: "Redirect to ${name}",
114
- operationId: "logInWith${name}",
115
- responses: {
116
- "302": { description: "" },
117
- "400": { description: "Missing token" }
118
- }
119
- }
120
- })];
121
- __esDecorate(this, null, __redirect_decorators, { kind: "method", name: "_redirect", static: false, private: false, access: { has: obj => "_redirect" in obj, get: obj => obj._redirect }, metadata: _metadata }, null, _instanceExtraInitializers);
122
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
123
- }
124
- _authenticationService = __runInitializers(this, _instanceExtraInitializers);
125
- authorized_uris;
126
- /**
127
- * Ensure default parameter url
128
- * @param name - the service name
129
- * @param params - the service parameters
130
- */
131
- constructor(name, params) {
132
- super(name, params);
133
- this.parameters.url ??= this.getDefaultUrl();
134
- }
135
- /** Initialize OAuth-specific metrics for tracking logins */
136
- initMetrics() {
137
- super.initMetrics();
138
- this.metrics.login = this.getMetric(Counter, {
139
- name: "oauth_login",
140
- help: "count the number of login",
141
- labelNames: ["method"]
142
- });
143
- }
144
- /**
145
- * Allow callback referer to access this url no matter what
146
- * @param context - the execution context
147
- * @returns true if the condition is met
148
- */
149
- async checkRequest(context) {
150
- // Only authorize url from this service
151
- if (!context.getHttpContext().getRelativeUri().startsWith(this.parameters.url)) {
152
- return false;
153
- }
154
- const regexps = this.getCallbackReferer();
155
- let valid = false;
156
- const referer = context.getHttpContext().getUniqueHeader("referer", "");
157
- if (this.parameters.no_referer && referer === "") {
158
- return true;
159
- }
160
- for (const i in regexps) {
161
- valid = referer.match(regexps[i]) !== null;
162
- if (valid) {
163
- break;
164
- }
165
- }
166
- return valid;
167
- }
168
- /**
169
- * Resolve dynamic dependancy
170
- * @returns this for chaining
171
- */
172
- resolve() {
173
- super.resolve();
174
- this.parameters.with(params => {
175
- if (params.url === undefined) {
176
- params.url = this.getDefaultUrl();
177
- }
178
- if (params.authorized_uris === undefined) {
179
- this.log("WARN", "Not defining authorized_uris is a security risk");
180
- }
181
- else {
182
- this.authorized_uris = new RegExpStringValidator(params.authorized_uris);
183
- }
184
- this._authenticationService = useService(this.parameters.authenticationService);
185
- });
186
- return this;
187
- }
188
- /**
189
- * Get OAuth callback query parameters
190
- * @returns the result
191
- */
192
- getCallbackQueryParams() {
193
- return [
194
- {
195
- name: "code",
196
- required: true
197
- },
198
- {
199
- name: "scope",
200
- required: true
201
- },
202
- {
203
- name: "state",
204
- required: true
205
- }
206
- ];
207
- }
208
- /**
209
- * Register callback + optional token/scope routes.
210
- *
211
- * `_redirect` is declared via `@Route` below. The callback query string
212
- * depends on {@link getCallbackQueryParams} (subclass-overridable), and
213
- * the token/scope routes are conditional on {@link hasToken} and
214
- * `parameters.exposeScope`, so those three stay programmatic.
215
- *
216
- * @returns this for chaining
217
- */
218
- async init() {
219
- await super.init();
220
- const name = this.getName();
221
- this.addRoute(this.parameters.url +
222
- "/callback{?" +
223
- this.getCallbackQueryParams()
224
- .map(param => param.name + (param.required ? "" : "?"))
225
- .join(",") +
226
- "}", ["GET"], this._callback, {
227
- get: {
228
- description: `Get result from ${name} Authentication`,
229
- summary: `Use the token provide to validate with ${name} the user`,
230
- operationId: `callbackFrom${name}`,
231
- responses: {
232
- "204": {
233
- description: ""
234
- },
235
- "400": {
236
- description: "Missing token"
237
- }
238
- }
239
- }
240
- });
241
- if (this.hasToken()) {
242
- this.addRoute(this.parameters.url + "/token", ["POST"], this._token, {
243
- post: {
244
- description: `Log with a ${name} token`,
245
- summary: `Use the token provide to validate with ${name} the user`,
246
- operationId: `verify${name}Token`,
247
- responses: {
248
- "204": {
249
- description: ""
250
- },
251
- "400": {
252
- description: "Missing token"
253
- }
254
- }
255
- }
256
- });
257
- }
258
- if (this.parameters.exposeScope) {
259
- this.addRoute(this.parameters.url + "/scope", ["GET"], this._scope, {
260
- get: {
261
- description: `List ${name} auth scope for this apps`,
262
- summary: "Retrieve the scope intended to be used with this auth",
263
- operationId: `get${name}Scope`,
264
- responses: {
265
- "204": {
266
- description: ""
267
- },
268
- "400": {
269
- description: "Missing token"
270
- }
271
- }
272
- }
273
- });
274
- }
275
- return this;
276
- }
277
- /**
278
- * Expose the scope used by the authentication
279
- * @param ctx - the operation context
280
- */
281
- _scope(ctx) {
282
- ctx.write(this.parameters.scope);
283
- }
284
- /**
285
- * Define if this provider allow authentication by tokens
286
- * @returns true if the condition is met
287
- */
288
- hasToken() {
289
- return false;
290
- }
291
- /**
292
- * Check if the url is authorized
293
- * @param redirect - the redirect URL
294
- * @param context - the execution context
295
- * @returns true if the condition is met
296
- */
297
- isAuthorizedUri(redirect, context) {
298
- return (!this.parameters.authorized_uris || // If no authorized_uris defined, allow all
299
- this.authorized_uris?.validate(redirect) || // If redirect is included in authorized_uris
300
- (this.parameters.no_referer && !context.getHttpContext().getUniqueHeader("referer"))); // If no_referer is allowed
301
- }
302
- /**
303
- * Inject the provider name into openapi template replacements so the
304
- * `${name}` placeholders in `@Route` metadata resolve per-instance.
305
- *
306
- * @returns replacements map merged with defaults
307
- */
308
- getOpenApiReplacements() {
309
- return { ...super.getOpenApiReplacements(), name: this.getName() };
310
- }
311
- /**
312
- * Redirect to the OAuth provider
313
- *
314
- * The calling url must be and authorized_uris if defined
315
- * @param ctx - the operation context
316
- */
317
- _redirect(ctx) {
318
- // implement default behavior
319
- const redirect_uri = this.parameters.redirect_uri || `${ctx.getHttpContext().getAbsoluteUrl()}/callback`;
320
- const redirect = ctx.getParameters().redirect || ctx.getHttpContext().getHeaders().referer;
321
- if (!this.isAuthorizedUri(redirect, ctx)) {
322
- throw new WebdaError.Unauthorized("Unauthorized redirect parameter");
323
- }
324
- const session = ctx.getSession();
325
- session.oauth ??= {};
326
- // Generate 2 random uuid: nonce and state
327
- session.oauth.state = getUuid("base64");
328
- // Redirect to the calling uri
329
- session.oauth.redirect = redirect;
330
- ctx.redirect(this.generateAuthUrl(redirect_uri, session.oauth.state, ctx));
331
- }
332
- /**
333
- * Handle a token return
334
- *
335
- * This is private to avoid any override
336
- * @param context - the execution context
337
- */
338
- async _token(context) {
339
- const res = await this.handleToken(context);
340
- await this.handleReturn(context, res.identId, res.profile);
341
- await this.emit("OAuth.Callback", {
342
- ...res,
343
- type: "token",
344
- provider: this.getName(),
345
- context
346
- });
347
- this.metrics.login.inc({ method: "token" });
348
- }
349
- /**
350
- * Handle a standard url callback
351
- *
352
- * This is private to avoid any override
353
- * @param ctx - the operation context
354
- */
355
- async _callback(ctx) {
356
- const res = await this.handleCallback(ctx);
357
- await this.handleReturn(ctx, res.identId, res.profile);
358
- await this.emit("OAuth.Callback", {
359
- ...res,
360
- type: "callback",
361
- provider: this.getName(),
362
- context: ctx
363
- });
364
- this.metrics.login.inc({ method: "callback" });
365
- }
366
- /**
367
- * Once approved by the OAuth provider this will do the common task
368
- * @param ctx - the operation context
369
- * @param identId - the identity identifier
370
- * @param profile - the user profile
371
- * @param _tokens - the authentication tokens
372
- */
373
- async handleReturn(ctx, identId, profile, _tokens = undefined) {
374
- // If no identId has been provided error
375
- if (!identId) {
376
- throw new WebdaError.Forbidden("No identId provided by the OAuth provider");
377
- }
378
- const session = ctx.getSession();
379
- session.oauth ??= {};
380
- // If authentication service then create a User/Ident couple
381
- if (this._authenticationService) {
382
- // Should call the onIdentLogin()
383
- await this._authenticationService.onIdentLogin(ctx, this.getName().toLowerCase(), identId, profile);
384
- }
385
- else {
386
- // Login in session
387
- ctx.getSession().login(identId, identId);
388
- // Store the profile retrieved
389
- session.oauth.profile = profile;
390
- }
391
- // Redirect to our targets
392
- if (session.oauth.redirect) {
393
- ctx.redirect(session.oauth.redirect);
394
- }
395
- else {
396
- ctx.write("Your authentication is successful");
397
- }
398
- // Clean variables from session
399
- session.oauth.state = undefined;
400
- session.oauth.redirect = undefined;
401
- }
402
- };
403
- })();
404
- export { OAuthService };
405
- //# sourceMappingURL=oauth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/services/oauth.ts"],"names":[],"mappings":"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"}