@rockster/core 0.0.4 → 0.1.1
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/access/access.module.js +3 -7
- package/access/access.module.js.map +1 -1
- package/access/constants.d.ts +2 -0
- package/access/constants.js +6 -0
- package/access/constants.js.map +1 -0
- package/access/controllers/controllers.d.ts +2 -1
- package/access/controllers/controllers.js +3 -1
- package/access/controllers/controllers.js.map +1 -1
- package/access/controllers/scope-access-profile.controller.d.ts +17 -0
- package/access/controllers/scope-access-profile.controller.js +111 -0
- package/access/controllers/scope-access-profile.controller.js.map +1 -0
- package/access/controllers/scope-group-user.controller.d.ts +11 -4
- package/access/controllers/scope-group-user.controller.js +57 -9
- package/access/controllers/scope-group-user.controller.js.map +1 -1
- package/access/controllers/scope-group.controller.d.ts +8 -5
- package/access/controllers/scope-group.controller.js +66 -12
- package/access/controllers/scope-group.controller.js.map +1 -1
- package/access/controllers/scope-owner.controller.d.ts +3 -2
- package/access/controllers/scope-owner.controller.js +18 -4
- package/access/controllers/scope-owner.controller.js.map +1 -1
- package/access/controllers/scope-user.controller.d.ts +2 -2
- package/access/controllers/scope-user.controller.js +19 -5
- package/access/controllers/scope-user.controller.js.map +1 -1
- package/access/decorators/context-params.decorator.d.ts +2 -0
- package/access/decorators/context-params.decorator.js +13 -0
- package/access/decorators/context-params.decorator.js.map +1 -0
- package/access/decorators/index.d.ts +2 -0
- package/access/decorators/index.js +19 -0
- package/access/decorators/index.js.map +1 -0
- package/access/decorators/scope-context-id-resolver.decorator.d.ts +10 -0
- package/access/decorators/scope-context-id-resolver.decorator.js +22 -0
- package/access/decorators/scope-context-id-resolver.decorator.js.map +1 -0
- package/access/entities/entities.d.ts +3 -1
- package/access/entities/entities.js +4 -0
- package/access/entities/entities.js.map +1 -1
- package/access/entities/index.d.ts +2 -0
- package/access/entities/index.js +2 -0
- package/access/entities/index.js.map +1 -1
- package/access/entities/scope-access-profile-key.d.ts +6 -0
- package/access/entities/scope-access-profile-key.js +40 -0
- package/access/entities/scope-access-profile-key.js.map +1 -0
- package/access/entities/scope-access-profile.d.ts +6 -0
- package/access/entities/scope-access-profile.js +37 -0
- package/access/entities/scope-access-profile.js.map +1 -0
- package/access/entities/scope-group.d.ts +3 -0
- package/access/entities/scope-group.js +16 -0
- package/access/entities/scope-group.js.map +1 -1
- package/access/functions/assert-context-admin-access.d.ts +15 -0
- package/access/functions/assert-context-admin-access.js +62 -0
- package/access/functions/assert-context-admin-access.js.map +1 -0
- package/access/functions/assert-master-or-owner.d.ts +9 -0
- package/access/functions/assert-master-or-owner.js +40 -0
- package/access/functions/assert-master-or-owner.js.map +1 -0
- package/access/functions/assert-scope-action-access.d.ts +32 -0
- package/access/functions/assert-scope-action-access.js +189 -0
- package/access/functions/assert-scope-action-access.js.map +1 -0
- package/access/functions/build-scope-resolver-initial-data.d.ts +4 -0
- package/access/functions/build-scope-resolver-initial-data.js +17 -0
- package/access/functions/build-scope-resolver-initial-data.js.map +1 -0
- package/access/functions/describe-action-scope.d.ts +9 -0
- package/access/functions/describe-action-scope.js +27 -0
- package/access/functions/describe-action-scope.js.map +1 -0
- package/access/functions/index.d.ts +5 -0
- package/access/functions/index.js +5 -0
- package/access/functions/index.js.map +1 -1
- package/access/functions/init-scope-service-executors.d.ts +3 -0
- package/access/functions/init-scope-service-executors.js +38 -0
- package/access/functions/init-scope-service-executors.js.map +1 -0
- package/access/functions/normalize-scope-keys.d.ts +4 -0
- package/access/functions/normalize-scope-keys.js +17 -0
- package/access/functions/normalize-scope-keys.js.map +1 -0
- package/access/functions/register-scope.d.ts +16 -5
- package/access/functions/register-scope.js +57 -45
- package/access/functions/register-scope.js.map +1 -1
- package/access/functions/resolve-scope-context-id.d.ts +9 -0
- package/access/functions/resolve-scope-context-id.js +71 -0
- package/access/functions/resolve-scope-context-id.js.map +1 -0
- package/access/functions/warn-if-public.d.ts +12 -0
- package/access/functions/warn-if-public.js +20 -0
- package/access/functions/warn-if-public.js.map +1 -0
- package/access/index.d.ts +2 -0
- package/access/index.js +2 -0
- package/access/index.js.map +1 -1
- package/access/interfaces/index.d.ts +1 -0
- package/access/interfaces/index.js +1 -0
- package/access/interfaces/index.js.map +1 -1
- package/access/interfaces/resolve-scope-context-id.d.ts +21 -0
- package/access/interfaces/resolve-scope-context-id.js +3 -0
- package/access/interfaces/resolve-scope-context-id.js.map +1 -0
- package/access/interfaces/scope-service-registry.d.ts +16 -1
- package/access/interfaces/scope-service.d.ts +6 -7
- package/access/models/scope-access-profile-keys-update.d.ts +5 -0
- package/access/models/scope-access-profile-keys-update.js +27 -0
- package/access/models/scope-access-profile-keys-update.js.map +1 -0
- package/access/models/scope-group-apply-access-profile.d.ts +6 -0
- package/access/models/scope-group-apply-access-profile.js +32 -0
- package/access/models/scope-group-apply-access-profile.js.map +1 -0
- package/access/models/scope-user-mapped.d.ts +1 -0
- package/access/models/scope-user-mapped.js +6 -0
- package/access/models/scope-user-mapped.js.map +1 -1
- package/access/models/scope-user.js +4 -2
- package/access/models/scope-user.js.map +1 -1
- package/access/queries/scope-access-profile.query.d.ts +1 -0
- package/access/queries/scope-access-profile.query.js +10 -0
- package/access/queries/scope-access-profile.query.js.map +1 -0
- package/access/queries/scope-group.query.js +9 -2
- package/access/queries/scope-group.query.js.map +1 -1
- package/access/services/index.d.ts +1 -0
- package/access/services/index.js +1 -0
- package/access/services/index.js.map +1 -1
- package/access/services/scope-access-profile.service.d.ts +13 -0
- package/access/services/scope-access-profile.service.js +75 -0
- package/access/services/scope-access-profile.service.js.map +1 -0
- package/access/services/scope-access.service.js +4 -2
- package/access/services/scope-access.service.js.map +1 -1
- package/access/services/scope-group-user.service.js +2 -2
- package/access/services/scope-group-user.service.js.map +1 -1
- package/access/services/scope-group.service.d.ts +10 -0
- package/access/services/scope-group.service.js +38 -1
- package/access/services/scope-group.service.js.map +1 -1
- package/access/services/scope-owner.service.d.ts +3 -0
- package/access/services/scope-owner.service.js +26 -1
- package/access/services/scope-owner.service.js.map +1 -1
- package/command/services/post-action-builder.js +19 -17
- package/command/services/post-action-builder.js.map +1 -1
- package/command/services/remove-action-builder.js +30 -22
- package/command/services/remove-action-builder.js.map +1 -1
- package/controllers/interfaces/controller-property.d.ts +7 -1
- package/controllers/services/default-action-builder.js +12 -30
- package/controllers/services/default-action-builder.js.map +1 -1
- package/controllers/services/restful-action-builder.js +25 -1
- package/controllers/services/restful-action-builder.js.map +1 -1
- package/core/contexts/request-context.d.ts +5 -0
- package/core/contexts/request-context.js +6 -0
- package/core/contexts/request-context.js.map +1 -0
- package/core/core.controller.js +6 -1
- package/core/core.controller.js.map +1 -1
- package/core/interfaces/action-docs.d.ts +15 -0
- package/core/interfaces/request-context.d.ts +5 -0
- package/core/services/request-router.js +2 -1
- package/core/services/request-router.js.map +1 -1
- package/database/database.controller.d.ts +1 -3
- package/database/database.controller.js +1 -5
- package/database/database.controller.js.map +1 -1
- package/database/decorators/protect-entity.decorator.d.ts +1 -0
- package/database/decorators/protect-entity.decorator.js +2 -3
- package/database/decorators/protect-entity.decorator.js.map +1 -1
- package/database/decorators/protected-entity.decorator.d.ts +1 -0
- package/database/decorators/protected-entity.decorator.js +2 -16
- package/database/decorators/protected-entity.decorator.js.map +1 -1
- package/database/functions/inject-repository-handle.js +4 -3
- package/database/functions/inject-repository-handle.js.map +1 -1
- package/database/interfaces/entity-object.d.ts +0 -6
- package/database/interfaces/index.d.ts +0 -1
- package/database/interfaces/index.js +0 -1
- package/database/interfaces/index.js.map +1 -1
- package/database/interfaces/repository.d.ts +8 -8
- package/docs/docs.module.js +3 -1
- package/docs/docs.module.js.map +1 -1
- package/docs/migrations/1747584000000-CreateDocsTables.d.ts +5 -0
- package/docs/migrations/1747584000000-CreateDocsTables.js +90 -0
- package/docs/migrations/1747584000000-CreateDocsTables.js.map +1 -0
- package/docs/migrations/migrations.d.ts +2 -0
- package/docs/migrations/migrations.js +8 -0
- package/docs/migrations/migrations.js.map +1 -0
- package/global.d.ts +2 -0
- package/global.js +1 -0
- package/global.js.map +1 -1
- package/index.d.ts +2 -1
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/jobs/jobs.controller.d.ts +2 -0
- package/jobs/jobs.controller.js +20 -16
- package/jobs/jobs.controller.js.map +1 -1
- package/package.json +70 -70
- package/query/functions/add-join.js +2 -13
- package/query/functions/add-join.js.map +1 -1
- package/query/functions/create-query-builder.js +0 -10
- package/query/functions/create-query-builder.js.map +1 -1
- package/query/functions/execute-query.js +34 -0
- package/query/functions/execute-query.js.map +1 -1
- package/query/functions/load-properties.js +73 -5
- package/query/functions/load-properties.js.map +1 -1
- package/query/services/query-action-builder.js +12 -18
- package/query/services/query-action-builder.js.map +1 -1
- package/remote-logs/dtos/index.d.ts +2 -0
- package/remote-logs/dtos/index.js +19 -0
- package/remote-logs/dtos/index.js.map +1 -0
- package/remote-logs/dtos/remote-log-hooks.dto.d.ts +72 -0
- package/remote-logs/dtos/remote-log-hooks.dto.js +280 -0
- package/remote-logs/dtos/remote-log-hooks.dto.js.map +1 -0
- package/remote-logs/dtos/remote-log-search.dto.d.ts +34 -0
- package/remote-logs/dtos/remote-log-search.dto.js +146 -0
- package/remote-logs/dtos/remote-log-search.dto.js.map +1 -0
- package/remote-logs/environment.d.ts +4 -0
- package/remote-logs/environment.js +5 -0
- package/remote-logs/environment.js.map +1 -0
- package/remote-logs/index.d.ts +3 -0
- package/remote-logs/index.js +20 -0
- package/remote-logs/index.js.map +1 -0
- package/remote-logs/interfaces/index.d.ts +1 -0
- package/remote-logs/interfaces/index.js +18 -0
- package/remote-logs/interfaces/index.js.map +1 -0
- package/remote-logs/interfaces/remote-logs-module-options.d.ts +8 -0
- package/remote-logs/interfaces/remote-logs-module-options.js +3 -0
- package/remote-logs/interfaces/remote-logs-module-options.js.map +1 -0
- package/remote-logs/remote-logs-hooks.controller.d.ts +60 -0
- package/remote-logs/remote-logs-hooks.controller.js +331 -0
- package/remote-logs/remote-logs-hooks.controller.js.map +1 -0
- package/remote-logs/remote-logs.controller.d.ts +8 -0
- package/remote-logs/remote-logs.controller.js +41 -0
- package/remote-logs/remote-logs.controller.js.map +1 -0
- package/remote-logs/remote-logs.module.d.ts +12 -0
- package/remote-logs/remote-logs.module.js +107 -0
- package/remote-logs/remote-logs.module.js.map +1 -0
- package/remote-logs/services/opensearch.service.d.ts +13 -0
- package/remote-logs/services/opensearch.service.js +167 -0
- package/remote-logs/services/opensearch.service.js.map +1 -0
- package/security/auth.controller.js +4 -4
- package/security/auth.controller.js.map +1 -1
- package/security/functions/add-protected.d.ts +2 -2
- package/security/functions/add-protected.js +8 -5
- package/security/functions/add-protected.js.map +1 -1
- package/security/functions/create-authentication-interceptor.d.ts +44 -0
- package/security/functions/create-authentication-interceptor.js +114 -0
- package/security/functions/create-authentication-interceptor.js.map +1 -0
- package/security/functions/find-auth-context.d.ts +1 -2
- package/security/functions/find-auth-context.js +6 -11
- package/security/functions/find-auth-context.js.map +1 -1
- package/security/index.d.ts +1 -0
- package/security/index.js +1 -0
- package/security/index.js.map +1 -1
- package/security/interfaces/authorization-schema.d.ts +3 -1
- package/security/services/authorization.service.d.ts +5 -3
- package/security/services/authorization.service.js +56 -37
- package/security/services/authorization.service.js.map +1 -1
- package/storage/services/routes.service.js +1 -1
- package/storage/services/routes.service.js.map +1 -1
- package/tasks/constants.d.ts +3 -0
- package/tasks/constants.js +2 -1
- package/tasks/constants.js.map +1 -1
- package/tasks/controllers/task.controller.d.ts +3 -2
- package/tasks/controllers/task.controller.js +11 -40
- package/tasks/controllers/task.controller.js.map +1 -1
- package/tasks/decorators/index.d.ts +1 -0
- package/tasks/decorators/index.js +1 -0
- package/tasks/decorators/index.js.map +1 -1
- package/tasks/decorators/task-payload.decorator.d.ts +1 -0
- package/tasks/decorators/task-payload.decorator.js +12 -0
- package/tasks/decorators/task-payload.decorator.js.map +1 -0
- package/tasks/decorators/task.decorator.js +3 -0
- package/tasks/decorators/task.decorator.js.map +1 -1
- package/tasks/functions/compile-all-task-post-hooks.d.ts +1 -0
- package/tasks/functions/compile-all-task-post-hooks.js +27 -0
- package/tasks/functions/compile-all-task-post-hooks.js.map +1 -0
- package/tasks/functions/compile-task-hook-handle.d.ts +6 -0
- package/tasks/functions/compile-task-hook-handle.js +67 -0
- package/tasks/functions/compile-task-hook-handle.js.map +1 -0
- package/tasks/functions/create-task-hook.d.ts +9 -0
- package/tasks/functions/create-task-hook.js +13 -0
- package/tasks/functions/create-task-hook.js.map +1 -0
- package/tasks/functions/create-task-message-post.js +2 -0
- package/tasks/functions/create-task-message-post.js.map +1 -1
- package/tasks/functions/register-task-post-hook-interceptors.d.ts +3 -0
- package/tasks/functions/register-task-post-hook-interceptors.js +86 -0
- package/tasks/functions/register-task-post-hook-interceptors.js.map +1 -0
- package/tasks/functions/run-task-post-hooks.d.ts +11 -0
- package/tasks/functions/run-task-post-hooks.js +18 -0
- package/tasks/functions/run-task-post-hooks.js.map +1 -0
- package/tasks/functions/task-message-operations.d.ts +18 -0
- package/tasks/functions/task-message-operations.js +100 -0
- package/tasks/functions/task-message-operations.js.map +1 -0
- package/tasks/functions/validate-task-payload.d.ts +2 -0
- package/tasks/functions/validate-task-payload.js +19 -0
- package/tasks/functions/validate-task-payload.js.map +1 -0
- package/tasks/hook-constants.d.ts +2 -0
- package/tasks/hook-constants.js +6 -0
- package/tasks/hook-constants.js.map +1 -0
- package/tasks/index.d.ts +3 -0
- package/tasks/index.js +3 -0
- package/tasks/index.js.map +1 -1
- package/tasks/interfaces/compiled-task-post-hooks.d.ts +17 -0
- package/tasks/interfaces/compiled-task-post-hooks.js +3 -0
- package/tasks/interfaces/compiled-task-post-hooks.js.map +1 -0
- package/tasks/interfaces/index.d.ts +3 -0
- package/tasks/interfaces/index.js +3 -0
- package/tasks/interfaces/index.js.map +1 -1
- package/tasks/interfaces/task-hook.d.ts +16 -0
- package/tasks/interfaces/task-hook.js +8 -0
- package/tasks/interfaces/task-hook.js.map +1 -0
- package/tasks/interfaces/task-object.d.ts +4 -0
- package/tasks/interfaces/task-post-hook.d.ts +2 -0
- package/{database/interfaces/protector.js → tasks/interfaces/task-post-hook.js} +1 -1
- package/tasks/interfaces/task-post-hook.js.map +1 -0
- package/tasks/interfaces/task-settings.d.ts +5 -0
- package/tasks/services/task-runner.service.d.ts +24 -3
- package/tasks/services/task-runner.service.js +66 -28
- package/tasks/services/task-runner.service.js.map +1 -1
- package/translations/controllers/translation.controller.d.ts +3 -1
- package/translations/controllers/translation.controller.js +17 -3
- package/translations/controllers/translation.controller.js.map +1 -1
- package/translations/services/translations.service.d.ts +1 -0
- package/translations/services/translations.service.js +25 -6
- package/translations/services/translations.service.js.map +1 -1
- package/translations/services/translator.service.d.ts +1 -0
- package/translations/services/translator.service.js +6 -0
- package/translations/services/translator.service.js.map +1 -1
- package/database/functions/use-protector.d.ts +0 -2
- package/database/functions/use-protector.js +0 -11
- package/database/functions/use-protector.js.map +0 -1
- package/database/interfaces/protector.d.ts +0 -51
- package/database/interfaces/protector.js.map +0 -1
- package/database/services/protect-builder.d.ts +0 -60
- package/database/services/protect-builder.js +0 -524
- package/database/services/protect-builder.js.map +0 -1
- package/security/functions/add-protect.d.ts +0 -2
- package/security/functions/add-protect.js +0 -11
- package/security/functions/add-protect.js.map +0 -1
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.OpenSearchService = void 0;
|
|
10
|
+
const class_injector_1 = require("@rockster/class-injector");
|
|
11
|
+
const environment_1 = require("../environment");
|
|
12
|
+
const CONNECT_TIMEOUT_MS = 10000;
|
|
13
|
+
let OpenSearchService = class OpenSearchService {
|
|
14
|
+
getAuthHeader() {
|
|
15
|
+
const { username, password } = environment_1.environment.options;
|
|
16
|
+
return `Basic ${Buffer.from(`${username}:${password}`).toString('base64')}`;
|
|
17
|
+
}
|
|
18
|
+
getIndexName(suffix) {
|
|
19
|
+
const config = environment_1.environment.options;
|
|
20
|
+
if (!config) {
|
|
21
|
+
throw new Error('RemoteLogsModule is not initialized');
|
|
22
|
+
}
|
|
23
|
+
if (!suffix) {
|
|
24
|
+
return config.index;
|
|
25
|
+
}
|
|
26
|
+
return `${config.index}${suffix.startsWith('-') ? suffix : `-${suffix}`}`;
|
|
27
|
+
}
|
|
28
|
+
async request(path, init = {}) {
|
|
29
|
+
const config = environment_1.environment.options;
|
|
30
|
+
if (!config) {
|
|
31
|
+
throw new Error('RemoteLogsModule is not initialized');
|
|
32
|
+
}
|
|
33
|
+
const url = `${config.url}${path.startsWith('/') ? path : `/${path}`}`;
|
|
34
|
+
return fetch(url, {
|
|
35
|
+
...init,
|
|
36
|
+
headers: {
|
|
37
|
+
Authorization: this.getAuthHeader(),
|
|
38
|
+
'Content-Type': 'application/json',
|
|
39
|
+
...(init.headers ?? {}),
|
|
40
|
+
},
|
|
41
|
+
signal: init.signal ?? AbortSignal.timeout(CONNECT_TIMEOUT_MS),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async search(payload) {
|
|
45
|
+
const index = this.getIndexName();
|
|
46
|
+
const response = await this.request(`/${index}/_search`, {
|
|
47
|
+
method: 'POST',
|
|
48
|
+
body: JSON.stringify(payload),
|
|
49
|
+
});
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
const text = await response.text().catch(() => '');
|
|
52
|
+
throw new Error(`OpenSearch search failed (${response.status}): ${text.slice(0, 500)}`);
|
|
53
|
+
}
|
|
54
|
+
return await response.json();
|
|
55
|
+
}
|
|
56
|
+
async searchIndex(suffix, payload) {
|
|
57
|
+
await this.ensureIndex(suffix);
|
|
58
|
+
const index = this.getIndexName(suffix);
|
|
59
|
+
const response = await this.request(`/${index}/_search`, {
|
|
60
|
+
method: 'POST',
|
|
61
|
+
body: JSON.stringify(payload),
|
|
62
|
+
});
|
|
63
|
+
if (!response.ok) {
|
|
64
|
+
const text = await response.text().catch(() => '');
|
|
65
|
+
throw new Error(`OpenSearch search failed (${response.status}): ${text.slice(0, 500)}`);
|
|
66
|
+
}
|
|
67
|
+
return await response.json();
|
|
68
|
+
}
|
|
69
|
+
async indexDocument(suffix, id, document) {
|
|
70
|
+
await this.ensureIndex(suffix);
|
|
71
|
+
const index = this.getIndexName(suffix);
|
|
72
|
+
const response = await this.request(`/${index}/_doc/${encodeURIComponent(id)}`, {
|
|
73
|
+
method: 'PUT',
|
|
74
|
+
body: JSON.stringify(document),
|
|
75
|
+
});
|
|
76
|
+
if (!response.ok) {
|
|
77
|
+
const text = await response.text().catch(() => '');
|
|
78
|
+
throw new Error(`OpenSearch index failed (${response.status}): ${text.slice(0, 500)}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async updateDocument(suffix, id, document) {
|
|
82
|
+
await this.ensureIndex(suffix);
|
|
83
|
+
const index = this.getIndexName(suffix);
|
|
84
|
+
const response = await this.request(`/${index}/_update/${encodeURIComponent(id)}`, {
|
|
85
|
+
method: 'POST',
|
|
86
|
+
body: JSON.stringify({ doc: document }),
|
|
87
|
+
});
|
|
88
|
+
if (!response.ok) {
|
|
89
|
+
const text = await response.text().catch(() => '');
|
|
90
|
+
throw new Error(`OpenSearch update failed (${response.status}): ${text.slice(0, 500)}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async getDocument(suffix, id) {
|
|
94
|
+
await this.ensureIndex(suffix);
|
|
95
|
+
const index = this.getIndexName(suffix);
|
|
96
|
+
const response = await this.request(`/${index}/_doc/${encodeURIComponent(id)}`, {
|
|
97
|
+
method: 'GET',
|
|
98
|
+
});
|
|
99
|
+
if (response.status === 404) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
if (!response.ok) {
|
|
103
|
+
const text = await response.text().catch(() => '');
|
|
104
|
+
throw new Error(`OpenSearch get failed (${response.status}): ${text.slice(0, 500)}`);
|
|
105
|
+
}
|
|
106
|
+
const payload = await response.json();
|
|
107
|
+
return payload._source ?? null;
|
|
108
|
+
}
|
|
109
|
+
async deleteDocument(suffix, id) {
|
|
110
|
+
const index = this.getIndexName(suffix);
|
|
111
|
+
const response = await this.request(`/${index}/_doc/${encodeURIComponent(id)}`, {
|
|
112
|
+
method: 'DELETE',
|
|
113
|
+
});
|
|
114
|
+
if (!response.ok && response.status !== 404) {
|
|
115
|
+
const text = await response.text().catch(() => '');
|
|
116
|
+
throw new Error(`OpenSearch delete failed (${response.status}): ${text.slice(0, 500)}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async ensureIndex(suffix) {
|
|
120
|
+
const index = this.getIndexName(suffix);
|
|
121
|
+
const response = await this.request(`/${index}`, { method: 'HEAD' });
|
|
122
|
+
if (response.ok) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (response.status !== 404) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const mappings = suffix === 'apps'
|
|
129
|
+
? {
|
|
130
|
+
properties: {
|
|
131
|
+
appId: { type: 'keyword' },
|
|
132
|
+
date: { type: 'date' },
|
|
133
|
+
},
|
|
134
|
+
}
|
|
135
|
+
: suffix === 'settings' || suffix === 'hooks' || suffix === 'events'
|
|
136
|
+
? {
|
|
137
|
+
properties: {
|
|
138
|
+
appId: { type: 'keyword' },
|
|
139
|
+
hookId: { type: 'keyword' },
|
|
140
|
+
date: { type: 'date' },
|
|
141
|
+
firedAt: { type: 'date' },
|
|
142
|
+
enabled: { type: 'boolean' },
|
|
143
|
+
url: { type: 'keyword' },
|
|
144
|
+
clearInterval: { type: 'keyword' },
|
|
145
|
+
logLevel: { type: 'keyword' },
|
|
146
|
+
name: { type: 'keyword' },
|
|
147
|
+
displayName: { type: 'keyword' },
|
|
148
|
+
read: { type: 'boolean' },
|
|
149
|
+
readBy: { type: 'keyword' },
|
|
150
|
+
},
|
|
151
|
+
}
|
|
152
|
+
: undefined;
|
|
153
|
+
const createResponse = await this.request(`/${index}`, {
|
|
154
|
+
method: 'PUT',
|
|
155
|
+
body: JSON.stringify(mappings ? { mappings } : {}),
|
|
156
|
+
});
|
|
157
|
+
if (!createResponse.ok) {
|
|
158
|
+
const text = await createResponse.text().catch(() => '');
|
|
159
|
+
throw new Error(`OpenSearch ensureIndex failed (${createResponse.status}): ${text.slice(0, 500)}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
exports.OpenSearchService = OpenSearchService;
|
|
164
|
+
exports.OpenSearchService = OpenSearchService = __decorate([
|
|
165
|
+
(0, class_injector_1.Injectable)()
|
|
166
|
+
], OpenSearchService);
|
|
167
|
+
//# sourceMappingURL=opensearch.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opensearch.service.js","sourceRoot":"./","sources":["remote-logs/services/opensearch.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,13 +33,13 @@ let AuthController = class AuthController {
|
|
|
33
33
|
.contexts;
|
|
34
34
|
for (const preSchemaContext of env_1.env.preSchema.contexts) {
|
|
35
35
|
const context = contexts
|
|
36
|
-
.find((
|
|
37
|
-
return
|
|
36
|
+
.find((registered) => {
|
|
37
|
+
return registered.name.toLowerCase() === preSchemaContext.name.toLowerCase();
|
|
38
38
|
});
|
|
39
39
|
if (!context) {
|
|
40
|
-
this.logger.throw(new Error(`AuthContext not found for {${preSchemaContext.
|
|
40
|
+
this.logger.throw(new Error(`AuthContext not found for {${preSchemaContext.name}}`));
|
|
41
41
|
}
|
|
42
|
-
for (const key of preSchemaContext.keys) {
|
|
42
|
+
for (const key of preSchemaContext.keys ?? []) {
|
|
43
43
|
context
|
|
44
44
|
.keys
|
|
45
45
|
.pushIfNotExists(key, (source, target) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.controller.js","sourceRoot":"./","sources":["security/auth.controller.ts"],"names":[],"mappings":";;;;;;;;;AAAA,6DAGkC;AAClC,6CAA0C;AAC1C,+BAA4B;AAE5B,kEAA8D;AAC9D,sCAA6C;AAGtC,IAAM,cAAc,GAApB,MAAM,cAAc;IAApB;QAEM,WAAM,GAAG,IAAI,eAAM,CAAC,UAAU,CAAC,CAAC;IA0D7C,CAAC;IAxDE,KAAK,CAAC,MAAM,CAAC,MAAoB;QAC9B,IAAI,CAAC,SAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAES,KAAK,CAAC,cAAc;QAE3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI;aACjB,OAAO;aACP,QAAQ;aACR,aAAa;aACb,QAAQ,CAAC;QAEb,KAAK,MAAM,gBAAgB,IAAI,SAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACrD,MAAM,OAAO,GAAG,QAAQ;iBACpB,IAAI,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"auth.controller.js","sourceRoot":"./","sources":["security/auth.controller.ts"],"names":[],"mappings":";;;;;;;;;AAAA,6DAGkC;AAClC,6CAA0C;AAC1C,+BAA4B;AAE5B,kEAA8D;AAC9D,sCAA6C;AAGtC,IAAM,cAAc,GAApB,MAAM,cAAc;IAApB;QAEM,WAAM,GAAG,IAAI,eAAM,CAAC,UAAU,CAAC,CAAC;IA0D7C,CAAC;IAxDE,KAAK,CAAC,MAAM,CAAC,MAAoB;QAC9B,IAAI,CAAC,SAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAES,KAAK,CAAC,cAAc;QAE3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI;aACjB,OAAO;aACP,QAAQ;aACR,aAAa;aACb,QAAQ,CAAC;QAEb,KAAK,MAAM,gBAAgB,IAAI,SAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACrD,MAAM,OAAO,GAAG,QAAQ;iBACpB,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;gBAClB,OAAO,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAChF,CAAC,CAAC,CAAC;YACN,IAAI,CAAC,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,8BAA8B,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YACxF,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC7C,OAAO;qBACH,IAAI;qBACJ,eAAe,CACb,GAAG,EACH,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;oBAChB,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;gBACtC,CAAC,CACH,CAAC;YACR,CAAC;QACJ,CAAC;QAED,SAAG,CAAC,MAAM,GAAG,IAAI;aACb,OAAO;aACP,QAAQ;aACR,aAAa,CAAC;QAElB,MAAM,yBAAgB;aAClB,QAAQ;aACR,YAAY,CAAC,CAAC,kCAAe,CAAC,CAAC,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAC3D,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,MAAoB;QAClD,SAAG,CAAC,QAAQ,GAAG,MAAM,IAAA,+BAAc,EAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IAC5D,CAAC;CACH,CAAA;AA5DY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,2BAAU,GAAE;GACA,cAAc,CA4D1B"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { GetTypeCallback } from "../../common";
|
|
2
1
|
import { IAuthorizationKey } from "../interfaces/authorization-schema";
|
|
3
|
-
|
|
2
|
+
/** Registers authorization keys for a scope context name (legacy security schema). */
|
|
3
|
+
export declare const addProtected: (contextName: string, keys?: IAuthorizationKey[]) => void;
|
|
@@ -2,17 +2,20 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addProtected = void 0;
|
|
4
4
|
const env_1 = require("../env");
|
|
5
|
-
|
|
5
|
+
/** Registers authorization keys for a scope context name (legacy security schema). */
|
|
6
|
+
const addProtected = (contextName, keys = []) => {
|
|
6
7
|
let context = env_1.env
|
|
7
8
|
.preSchema
|
|
8
9
|
.contexts
|
|
9
|
-
.find((
|
|
10
|
-
return
|
|
10
|
+
.find((entry) => {
|
|
11
|
+
return entry.name.toLowerCase() === contextName.toLowerCase();
|
|
11
12
|
});
|
|
12
13
|
if (!context) {
|
|
13
14
|
context = {
|
|
14
|
-
|
|
15
|
-
keys: keys || []
|
|
15
|
+
name: contextName,
|
|
16
|
+
keys: keys || [],
|
|
17
|
+
ownerKey: { name: "owner" },
|
|
18
|
+
adminKey: { name: "admin" },
|
|
16
19
|
};
|
|
17
20
|
env_1.env.preSchema.contexts.push(context);
|
|
18
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-protected.js","sourceRoot":"./","sources":["security/functions/add-protected.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"add-protected.js","sourceRoot":"./","sources":["security/functions/add-protected.ts"],"names":[],"mappings":";;;AAAA,gCAA6B;AAG7B,sFAAsF;AAC/E,MAAM,YAAY,GAAG,CACzB,WAAmB,EACnB,OAA4B,EAAE,EAC/B,EAAE;IACD,IAAI,OAAO,GAAG,SAAG;SACb,SAAS;SACT,QAAQ;SACR,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEN,IAAI,CAAC,OAAO,EAAE,CAAC;QACZ,OAAO,GAAG;YACP,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,IAAI,IAAI,EAAE;YAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SACJ,CAAC;QAC3B,SAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACL,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9B,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,YAAY,gBAsBvB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Instantiable } from "@rockster/common";
|
|
2
|
+
import { IAuthController } from "../interfaces/auth-controller";
|
|
3
|
+
/** Config for {@link createAuthenticationInterceptor}. */
|
|
4
|
+
export type AuthenticationInterceptorConfig = {
|
|
5
|
+
/** Unique name (registry key) — also the name you give your decorator. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** Lazy ref to the auth service (implements {@link IAuthController}). */
|
|
8
|
+
service: () => Instantiable<IAuthController>;
|
|
9
|
+
/** Human description surfaced in the generated docs/SDK. */
|
|
10
|
+
description?: string;
|
|
11
|
+
/** Pipeline phase(s) to run on. Defaults to `onBeforeExecute`. */
|
|
12
|
+
filters?: string[];
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Builds a **named** authentication decorator in the `createInterceptor` style,
|
|
16
|
+
* so each integration can name and document its own (e.g. `@ServiceApiAuth()`).
|
|
17
|
+
*
|
|
18
|
+
* The produced decorator marks the endpoint as `public` (it opts out of the
|
|
19
|
+
* default auth service) **and** `authenticated` (it runs a special auth
|
|
20
|
+
* strategy). That suppresses the standing `[PUBLIC]` warning and lets the docs
|
|
21
|
+
* present a custom auth requirement instead of "no auth".
|
|
22
|
+
*
|
|
23
|
+
* The interceptor runs the configured service (lazy `() => Service`, same
|
|
24
|
+
* `IAuthController` shape as the default `AuthController`) and, on success, sets
|
|
25
|
+
* `context.session` / `req.session`; it throws `UnauthorizedError` otherwise.
|
|
26
|
+
*
|
|
27
|
+
* Usage:
|
|
28
|
+
* ```ts
|
|
29
|
+
* export const ServiceApiAuth = createAuthenticationInterceptor({
|
|
30
|
+
* name: "ServiceApiAuth",
|
|
31
|
+
* service: () => ServiceApiKeyAuthService,
|
|
32
|
+
* description: "Autentica via API key de serviço (header X-Api-Key).",
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* @ServiceApiAuth()
|
|
36
|
+
* @Get("/things")
|
|
37
|
+
* async list() { ... }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* Note: it authenticates in the execute phase. To combine special auth with
|
|
41
|
+
* scope keys on the **same** endpoint, the auth must run before scope
|
|
42
|
+
* assertion — refine the `filters` when that case first appears.
|
|
43
|
+
*/
|
|
44
|
+
export declare function createAuthenticationInterceptor<TParams = void>(config: AuthenticationInterceptorConfig): (params?: TParams) => PropertyDecorator;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createAuthenticationInterceptor = createAuthenticationInterceptor;
|
|
10
|
+
const class_injector_1 = require("@rockster/class-injector");
|
|
11
|
+
const common_1 = require("@rockster/common");
|
|
12
|
+
const core_1 = require("../../core");
|
|
13
|
+
/** Auth services are singletons — instantiate each once. */
|
|
14
|
+
const instanceCache = new Map();
|
|
15
|
+
async function resolveAuthService(ServiceRef) {
|
|
16
|
+
const ServiceClass = ServiceRef();
|
|
17
|
+
let instance = instanceCache.get(ServiceClass);
|
|
18
|
+
if (!instance) {
|
|
19
|
+
instance = (await (0, class_injector_1.createInstance)(ServiceClass));
|
|
20
|
+
instanceCache.set(ServiceClass, instance);
|
|
21
|
+
}
|
|
22
|
+
return instance;
|
|
23
|
+
}
|
|
24
|
+
let AuthenticationInterceptor = class AuthenticationInterceptor {
|
|
25
|
+
async intercept(args) {
|
|
26
|
+
const config = args.params?.__config;
|
|
27
|
+
if (!config) {
|
|
28
|
+
throw new common_1.UnauthorizedError();
|
|
29
|
+
}
|
|
30
|
+
const request = args.req ?? args.context?.httpRequest;
|
|
31
|
+
const service = await resolveAuthService(config.service);
|
|
32
|
+
if (request?.isWs && service.wsInterceptor) {
|
|
33
|
+
const connection = await service.wsInterceptor(request);
|
|
34
|
+
if (!connection) {
|
|
35
|
+
throw new common_1.UnauthorizedError();
|
|
36
|
+
}
|
|
37
|
+
if (args.context) {
|
|
38
|
+
args.context.session = connection;
|
|
39
|
+
args.context.isAuthenticated = true;
|
|
40
|
+
}
|
|
41
|
+
if (args.req) {
|
|
42
|
+
args.req.session = connection;
|
|
43
|
+
}
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (!request) {
|
|
47
|
+
throw new common_1.UnauthorizedError();
|
|
48
|
+
}
|
|
49
|
+
const session = await service.httpInterceptor(request);
|
|
50
|
+
if (!session) {
|
|
51
|
+
throw new common_1.UnauthorizedError();
|
|
52
|
+
}
|
|
53
|
+
if (args.context) {
|
|
54
|
+
args.context.session = session;
|
|
55
|
+
args.context.isAuthenticated = true;
|
|
56
|
+
}
|
|
57
|
+
if (args.req) {
|
|
58
|
+
args.req.session = session;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
AuthenticationInterceptor = __decorate([
|
|
63
|
+
(0, class_injector_1.Injectable)()
|
|
64
|
+
], AuthenticationInterceptor);
|
|
65
|
+
/**
|
|
66
|
+
* Builds a **named** authentication decorator in the `createInterceptor` style,
|
|
67
|
+
* so each integration can name and document its own (e.g. `@ServiceApiAuth()`).
|
|
68
|
+
*
|
|
69
|
+
* The produced decorator marks the endpoint as `public` (it opts out of the
|
|
70
|
+
* default auth service) **and** `authenticated` (it runs a special auth
|
|
71
|
+
* strategy). That suppresses the standing `[PUBLIC]` warning and lets the docs
|
|
72
|
+
* present a custom auth requirement instead of "no auth".
|
|
73
|
+
*
|
|
74
|
+
* The interceptor runs the configured service (lazy `() => Service`, same
|
|
75
|
+
* `IAuthController` shape as the default `AuthController`) and, on success, sets
|
|
76
|
+
* `context.session` / `req.session`; it throws `UnauthorizedError` otherwise.
|
|
77
|
+
*
|
|
78
|
+
* Usage:
|
|
79
|
+
* ```ts
|
|
80
|
+
* export const ServiceApiAuth = createAuthenticationInterceptor({
|
|
81
|
+
* name: "ServiceApiAuth",
|
|
82
|
+
* service: () => ServiceApiKeyAuthService,
|
|
83
|
+
* description: "Autentica via API key de serviço (header X-Api-Key).",
|
|
84
|
+
* });
|
|
85
|
+
*
|
|
86
|
+
* @ServiceApiAuth()
|
|
87
|
+
* @Get("/things")
|
|
88
|
+
* async list() { ... }
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* Note: it authenticates in the execute phase. To combine special auth with
|
|
92
|
+
* scope keys on the **same** endpoint, the auth must run before scope
|
|
93
|
+
* assertion — refine the `filters` when that case first appears.
|
|
94
|
+
*/
|
|
95
|
+
function createAuthenticationInterceptor(config) {
|
|
96
|
+
return core_1.createInterceptor.custom({
|
|
97
|
+
name: config.name,
|
|
98
|
+
filters: config.filters ?? [core_1.commonInterceptor.onBeforeExecute],
|
|
99
|
+
executor: AuthenticationInterceptor,
|
|
100
|
+
}, (decorator, interceptor) => {
|
|
101
|
+
return (params) => {
|
|
102
|
+
return (target, propertyKey) => {
|
|
103
|
+
const property = core.storage.createProperty(target, propertyKey);
|
|
104
|
+
property.public = true;
|
|
105
|
+
property.authenticated = true;
|
|
106
|
+
decorator(interceptor, {
|
|
107
|
+
__config: config,
|
|
108
|
+
params,
|
|
109
|
+
})(target, propertyKey);
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=create-authentication-interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-authentication-interceptor.js","sourceRoot":"./","sources":["security/functions/create-authentication-interceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { Instantiable } from "@rockster/common";
|
|
2
1
|
import { IAuthorizationContext } from "../interfaces/authorization-schema";
|
|
3
|
-
export declare const findAuthContext: (
|
|
2
|
+
export declare const findAuthContext: (contextName: string) => IAuthorizationContext;
|
|
@@ -3,21 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.findAuthContext = void 0;
|
|
4
4
|
const common_1 = require("@rockster/common");
|
|
5
5
|
const env_1 = require("../env");
|
|
6
|
-
const findAuthContext = (
|
|
7
|
-
const check = typeof nameOrTarget === 'string'
|
|
8
|
-
? (source) => {
|
|
9
|
-
return source.name.toLowerCase() === nameOrTarget.toLowerCase();
|
|
10
|
-
}
|
|
11
|
-
: (source) => {
|
|
12
|
-
return source.protector() === nameOrTarget;
|
|
13
|
-
};
|
|
6
|
+
const findAuthContext = (contextName) => {
|
|
14
7
|
const authContext = env_1.env
|
|
15
8
|
.schema
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
?.contexts
|
|
10
|
+
?.find((source) => {
|
|
11
|
+
return source.name.toLowerCase() === contextName.toLowerCase();
|
|
12
|
+
});
|
|
18
13
|
if (!authContext) {
|
|
19
14
|
throw new common_1.NotFoundError({
|
|
20
|
-
message: `AuthContext [${
|
|
15
|
+
message: `AuthContext [${contextName}] not found`,
|
|
21
16
|
});
|
|
22
17
|
}
|
|
23
18
|
return authContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-auth-context.js","sourceRoot":"./","sources":["security/functions/find-auth-context.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"find-auth-context.js","sourceRoot":"./","sources":["security/functions/find-auth-context.ts"],"names":[],"mappings":";;;AAAA,6CAAiD;AACjD,gCAA6B;AAGtB,MAAM,eAAe,GAAG,CAAC,WAAmB,EAAyB,EAAE;IAC3E,MAAM,WAAW,GAAG,SAAG;SACnB,MAAM;QACP,EAAE,QAAQ;QACV,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACf,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;IAEN,IAAI,CAAC,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,sBAAa,CAAC;YACrB,OAAO,EAAE,gBAAgB,WAAW,aAAa;SACnD,CAAC,CAAC;IACN,CAAC;IAED,OAAO,WAAW,CAAC;AACtB,CAAC,CAAC;AAfW,QAAA,eAAe,mBAe1B"}
|
package/security/index.d.ts
CHANGED
package/security/index.js
CHANGED
|
@@ -16,5 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./interfaces"), exports);
|
|
18
18
|
__exportStar(require("./functions/is-auth-enabled"), exports);
|
|
19
|
+
__exportStar(require("./functions/create-authentication-interceptor"), exports);
|
|
19
20
|
__exportStar(require("./interceptors"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
package/security/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"./","sources":["security/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,8DAA4C;AAC5C,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"./","sources":["security/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,8DAA4C;AAC5C,gFAA8D;AAC9D,iDAA+B"}
|
|
@@ -4,13 +4,15 @@ export interface IAuthorizationKey {
|
|
|
4
4
|
description?: string;
|
|
5
5
|
iconUrl?: string;
|
|
6
6
|
group?: string;
|
|
7
|
+
/** @deprecated Protector module removed; kept for schema compatibility. */
|
|
7
8
|
protector?: GetTypeCallback;
|
|
8
9
|
}
|
|
9
10
|
export interface IAuthorizationContext {
|
|
10
11
|
name: string;
|
|
11
12
|
description?: string;
|
|
12
13
|
iconUrl?: string;
|
|
13
|
-
|
|
14
|
+
/** @deprecated Protector module removed; kept for schema compatibility. */
|
|
15
|
+
protector?: GetTypeCallback;
|
|
14
16
|
keys?: IAuthorizationKey[];
|
|
15
17
|
ownerKey: IAuthorizationKey;
|
|
16
18
|
adminKey: IAuthorizationKey;
|
|
@@ -3,9 +3,11 @@ import { AuthContextData } from "../models/auth-context-data";
|
|
|
3
3
|
import { GetUserPermissionsPayload } from "../models/get-user-permissions-payload";
|
|
4
4
|
import { SetUserPermissionsPayload } from "../models/set-user-permissions-payload";
|
|
5
5
|
export declare class AuthorizationService {
|
|
6
|
-
getUserPermissions(payload: GetUserPermissionsPayload,
|
|
6
|
+
getUserPermissions(payload: GetUserPermissionsPayload, _userId: string, _entityManager: EntityManager): Promise<{
|
|
7
7
|
accessKeys: string[];
|
|
8
8
|
}>;
|
|
9
|
-
changeUserPermissions(payload: SetUserPermissionsPayload, userId: string,
|
|
10
|
-
getAuthContextConfig(payload: AuthContextData, userId: string,
|
|
9
|
+
changeUserPermissions(payload: SetUserPermissionsPayload, userId: string, _entityManager: EntityManager): Promise<void>;
|
|
10
|
+
getAuthContextConfig(payload: AuthContextData, userId: string, _entityManager: EntityManager): Promise<import("..").IAuthorizationContext>;
|
|
11
|
+
protected assertCanManageContext(contextName: string, userId: string, contextId: string): Promise<void>;
|
|
12
|
+
protected assertScopeAccessService(): void;
|
|
11
13
|
}
|
|
@@ -8,51 +8,70 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.AuthorizationService = void 0;
|
|
10
10
|
const class_injector_1 = require("@rockster/class-injector");
|
|
11
|
-
const
|
|
11
|
+
const common_1 = require("@rockster/common");
|
|
12
|
+
const env_1 = require("../../access/env");
|
|
13
|
+
const get_is_owner_1 = require("../../access/functions/get-is-owner");
|
|
14
|
+
const get_user_keys_1 = require("../../access/functions/get-user-keys");
|
|
15
|
+
const normalize_scope_keys_1 = require("../../access/functions/normalize-scope-keys");
|
|
12
16
|
const find_auth_context_1 = require("../functions/find-auth-context");
|
|
13
17
|
let AuthorizationService = class AuthorizationService {
|
|
14
|
-
async getUserPermissions(payload,
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
context: authContext.name,
|
|
20
|
-
contextId: payload.contextId,
|
|
21
|
-
targetUserId: payload.userId,
|
|
22
|
-
userId: userId,
|
|
23
|
-
entityManager: entityManager
|
|
24
|
-
});
|
|
18
|
+
async getUserPermissions(payload, _userId, _entityManager) {
|
|
19
|
+
this.assertScopeAccessService();
|
|
20
|
+
const accessKeys = payload.contextId
|
|
21
|
+
? await env_1.env.scopeAccessService.getKeysWithCtx(payload.contextId, payload.userId)
|
|
22
|
+
: await env_1.env.scopeAccessService.getAllUserKeys(payload.userId);
|
|
25
23
|
return { accessKeys };
|
|
26
24
|
}
|
|
27
|
-
async changeUserPermissions(payload, userId,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
entityManager: entityManager,
|
|
37
|
-
accessKeys: payload.accessKeys
|
|
38
|
-
});
|
|
25
|
+
async changeUserPermissions(payload, userId, _entityManager) {
|
|
26
|
+
this.assertScopeAccessService();
|
|
27
|
+
if (!payload.contextId?.trim()) {
|
|
28
|
+
throw new common_1.ForbiddenError({
|
|
29
|
+
message: "contextId is required",
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
await this.assertCanManageContext(payload.context, userId, payload.contextId);
|
|
33
|
+
await env_1.env.scopeAccessService.updateKeys("user", payload.context, payload.contextId, payload.userId, (0, normalize_scope_keys_1.normalizeScopeKeys)(payload.accessKeys));
|
|
39
34
|
}
|
|
40
|
-
async getAuthContextConfig(payload, userId,
|
|
35
|
+
async getAuthContextConfig(payload, userId, _entityManager) {
|
|
41
36
|
const authContext = (0, find_auth_context_1.findAuthContext)(payload.context);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
authContext.ownerKey.name
|
|
46
|
-
];
|
|
47
|
-
await protector.isAuthorized({
|
|
48
|
-
keys: canReadKeys,
|
|
49
|
-
userId: userId,
|
|
50
|
-
context: payload.context,
|
|
51
|
-
contextId: payload.contextId,
|
|
52
|
-
entityManager
|
|
53
|
-
});
|
|
37
|
+
if (payload.contextId) {
|
|
38
|
+
await this.assertCanManageContext(payload.context, userId, payload.contextId);
|
|
39
|
+
}
|
|
54
40
|
return authContext;
|
|
55
41
|
}
|
|
42
|
+
async assertCanManageContext(contextName, userId, contextId) {
|
|
43
|
+
const isOwner = await (0, get_is_owner_1.getIsOwner)(contextName, userId, contextId);
|
|
44
|
+
if (isOwner) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
let authContext;
|
|
48
|
+
try {
|
|
49
|
+
authContext = (0, find_auth_context_1.findAuthContext)(contextName);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (error instanceof common_1.NotFoundError) {
|
|
53
|
+
throw new common_1.ForbiddenError({
|
|
54
|
+
message: "Action require permissions to execute",
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
const userKeys = await (0, get_user_keys_1.getUserKeys)(userId, contextId);
|
|
60
|
+
const privilegedKeys = [
|
|
61
|
+
authContext.ownerKey?.name,
|
|
62
|
+
authContext.adminKey?.name,
|
|
63
|
+
].filter((key) => Boolean(key));
|
|
64
|
+
if (!privilegedKeys.some((key) => userKeys.includes(key))) {
|
|
65
|
+
throw new common_1.ForbiddenError({
|
|
66
|
+
message: "Action require permissions to execute",
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
assertScopeAccessService() {
|
|
71
|
+
if (!env_1.env.scopeAccessService) {
|
|
72
|
+
throw new Error("ScopeAccessService is not initialized");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
56
75
|
};
|
|
57
76
|
exports.AuthorizationService = AuthorizationService;
|
|
58
77
|
exports.AuthorizationService = AuthorizationService = __decorate([
|