@forestadmin/forestadmin-client 1.0.0-alpha.2 → 1.0.0-alpha.4
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/dist/charts/chart-handler.d.ts +17 -0
- package/dist/charts/chart-handler.js +39 -0
- package/dist/charts/types.d.ts +2 -1
- package/dist/charts/types.js +1 -1
- package/dist/forest-admin-client-with-cache.d.ts +6 -2
- package/dist/forest-admin-client-with-cache.js +4 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +14 -4
- package/dist/permissions/forest-http-api.d.ts +1 -1
- package/dist/permissions/generate-actions-from-permissions.js +2 -2
- package/dist/permissions/hash-chart.d.ts +0 -3
- package/dist/permissions/hash-chart.js +2 -6
- package/dist/permissions/permission-with-cache.d.ts +1 -1
- package/dist/permissions/permission-with-cache.js +2 -2
- package/dist/permissions/rendering-permission.d.ts +3 -1
- package/dist/permissions/rendering-permission.js +13 -5
- package/dist/permissions/types.d.ts +2 -1
- package/dist/permissions/types.js +1 -1
- package/dist/permissions/user-permission.js +1 -1
- package/dist/types.d.ts +19 -1
- package/dist/utils/chart-detector.d.ts +11 -0
- package/dist/utils/chart-detector.js +28 -0
- package/dist/utils/context-variables-injector.d.ts +8 -0
- package/dist/utils/context-variables-injector.js +41 -0
- package/dist/utils/context-variables-instantiator.d.ts +13 -0
- package/dist/utils/context-variables-instantiator.js +18 -0
- package/dist/utils/context-variables.d.ts +17 -0
- package/dist/utils/context-variables.js +29 -0
- package/package.json +2 -2
- package/dist/permissions/generate-user-scope.d.ts +0 -4
- package/dist/permissions/generate-user-scope.js +0 -36
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ChartHandlerInterface } from '../types';
|
|
2
|
+
import type { RequestContextVariables } from '../utils/context-variables';
|
|
3
|
+
import type ContextVariablesInstantiator from '../utils/context-variables-instantiator';
|
|
4
|
+
import { Chart } from './types';
|
|
5
|
+
export declare type ChartRequest<C extends Chart = Chart> = C & {
|
|
6
|
+
contextVariables?: RequestContextVariables;
|
|
7
|
+
};
|
|
8
|
+
export default class ChartHandlerService implements ChartHandlerInterface {
|
|
9
|
+
private readonly contextVariablesInstantiator;
|
|
10
|
+
constructor(contextVariablesInstantiator: ContextVariablesInstantiator);
|
|
11
|
+
getChartWithContextInjected({ userId, renderingId, chartRequest, }: {
|
|
12
|
+
userId: string | number;
|
|
13
|
+
renderingId: string | number;
|
|
14
|
+
chartRequest: ChartRequest;
|
|
15
|
+
}): Promise<Chart>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=chart-handler.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const chart_detector_1 = __importDefault(require("../utils/chart-detector"));
|
|
7
|
+
const context_variables_injector_1 = __importDefault(require("../utils/context-variables-injector"));
|
|
8
|
+
class ChartHandlerService {
|
|
9
|
+
constructor(contextVariablesInstantiator) {
|
|
10
|
+
this.contextVariablesInstantiator = contextVariablesInstantiator;
|
|
11
|
+
}
|
|
12
|
+
async getChartWithContextInjected({ userId, renderingId, chartRequest, }) {
|
|
13
|
+
const contextVariables = await this.contextVariablesInstantiator.buildContextVariables({
|
|
14
|
+
userId,
|
|
15
|
+
renderingId,
|
|
16
|
+
requestContextVariables: chartRequest.contextVariables,
|
|
17
|
+
});
|
|
18
|
+
const chart = { ...chartRequest };
|
|
19
|
+
delete chart.contextVariables;
|
|
20
|
+
if (chart_detector_1.default.isFilterableChart(chart)) {
|
|
21
|
+
chart.filter = context_variables_injector_1.default.injectContextInFilter(chart.filter, contextVariables);
|
|
22
|
+
}
|
|
23
|
+
if (chart_detector_1.default.isAggregatedChart(chart)) {
|
|
24
|
+
chart.aggregator = context_variables_injector_1.default.injectContextInValue(chart.aggregator, contextVariables);
|
|
25
|
+
}
|
|
26
|
+
if (chart_detector_1.default.isLineChart(chart)) {
|
|
27
|
+
chart.timeRange = context_variables_injector_1.default.injectContextInValue(chart.timeRange, contextVariables);
|
|
28
|
+
}
|
|
29
|
+
if (chart_detector_1.default.isObjectiveChart(chart)) {
|
|
30
|
+
chart.objective = Number(context_variables_injector_1.default.injectContextInValue(chart.objective, contextVariables));
|
|
31
|
+
}
|
|
32
|
+
if (chart_detector_1.default.isLeaderboardChart(chart)) {
|
|
33
|
+
chart.limit = Number(context_variables_injector_1.default.injectContextInValue(chart.limit, contextVariables));
|
|
34
|
+
}
|
|
35
|
+
return chart;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.default = ChartHandlerService;
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGFydHMvY2hhcnQtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUlBLDZFQUFvRDtBQUNwRCxxR0FBMkU7QUFPM0UsTUFBcUIsbUJBQW1CO0lBQ3RDLFlBQTZCLDRCQUEwRDtRQUExRCxpQ0FBNEIsR0FBNUIsNEJBQTRCLENBQThCO0lBQUcsQ0FBQztJQUVwRixLQUFLLENBQUMsMkJBQTJCLENBQUMsRUFDdkMsTUFBTSxFQUNOLFdBQVcsRUFDWCxZQUFZLEdBS2I7UUFDQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLDRCQUE0QixDQUFDLHFCQUFxQixDQUFDO1lBQ3JGLE1BQU07WUFDTixXQUFXO1lBQ1gsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLGdCQUFnQjtTQUN2RCxDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssR0FBRyxFQUFFLEdBQUcsWUFBWSxFQUFFLENBQUM7UUFDbEMsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFFOUIsSUFBSSx3QkFBYSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsb0NBQXdCLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQy9GO1FBRUQsSUFBSSx3QkFBYSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsb0NBQXdCLENBQUMsb0JBQW9CLENBQzlELEtBQUssQ0FBQyxVQUFVLEVBQ2hCLGdCQUFnQixDQUNqQixDQUFDO1NBQ0g7UUFFRCxJQUFJLHdCQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLEtBQUssQ0FBQyxTQUFTLEdBQUcsb0NBQXdCLENBQUMsb0JBQW9CLENBQzdELEtBQUssQ0FBQyxTQUFTLEVBQ2YsZ0JBQWdCLENBQ2pCLENBQUM7U0FDSDtRQUVELElBQUksd0JBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QyxLQUFLLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FDdEIsb0NBQXdCLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUNqRixDQUFDO1NBQ0g7UUFFRCxJQUFJLHdCQUFhLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0MsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQ2xCLG9DQUF3QixDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FDN0UsQ0FBQztTQUNIO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUFyREQsc0NBcURDIn0=
|
package/dist/charts/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PlainConditionTreeBranch } from '@forestadmin/datasource-toolkit';
|
|
1
2
|
export declare type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
2
3
|
export interface BaseChart {
|
|
3
4
|
type: ChartType;
|
|
@@ -15,7 +16,7 @@ export interface QueryChart extends BaseChart {
|
|
|
15
16
|
query: string;
|
|
16
17
|
}
|
|
17
18
|
export interface FilterableChart extends BaseChart {
|
|
18
|
-
filter?:
|
|
19
|
+
filter?: PlainConditionTreeBranch | null;
|
|
19
20
|
}
|
|
20
21
|
export interface AggregatedChart extends BaseChart {
|
|
21
22
|
aggregator: 'Sum' | 'Count';
|
package/dist/charts/types.js
CHANGED
|
@@ -11,4 +11,4 @@ var ChartType;
|
|
|
11
11
|
ChartType["Percentage"] = "Percentage";
|
|
12
12
|
ChartType["Smart"] = "Smart";
|
|
13
13
|
})(ChartType = exports.ChartType || (exports.ChartType = {}));
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhcnRzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXdFQSxJQUFZLFNBUVg7QUFSRCxXQUFZLFNBQVM7SUFDbkIsd0JBQVcsQ0FBQTtJQUNYLDRCQUFlLENBQUE7SUFDZix3Q0FBMkIsQ0FBQTtJQUMzQiwwQkFBYSxDQUFBO0lBQ2Isb0NBQXVCLENBQUE7SUFDdkIsc0NBQXlCLENBQUE7SUFDekIsNEJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUlcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFRcEIifQ==
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import type { GenericTree } from '@forestadmin/datasource-toolkit';
|
|
2
|
-
import
|
|
2
|
+
import ChartHandler from './charts/chart-handler';
|
|
3
3
|
import RenderingPermissionService from './permissions/rendering-permission';
|
|
4
|
+
import { ForestAdminClient, ForestAdminClientOptionsWithDefaults, PermissionService } from './types';
|
|
5
|
+
import ContextVariablesInstantiator from './utils/context-variables-instantiator';
|
|
4
6
|
export default class ForestAdminClientWithCache implements ForestAdminClient {
|
|
5
7
|
protected readonly options: ForestAdminClientOptionsWithDefaults;
|
|
6
8
|
readonly permissionService: PermissionService;
|
|
7
9
|
protected readonly renderingPermissionService: RenderingPermissionService;
|
|
8
|
-
|
|
10
|
+
readonly contextVariablesInstantiator: ContextVariablesInstantiator;
|
|
11
|
+
readonly chartHandler: ChartHandler;
|
|
12
|
+
constructor(options: ForestAdminClientOptionsWithDefaults, permissionService: PermissionService, renderingPermissionService: RenderingPermissionService, contextVariablesInstantiator: ContextVariablesInstantiator, chartHandler: ChartHandler);
|
|
9
13
|
verifySignedActionParameters<TSignedParameters>(signedParameters: string): TSignedParameters;
|
|
10
14
|
getScope({ renderingId, userId, collectionName, }: {
|
|
11
15
|
renderingId: number | string;
|
|
@@ -5,10 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const verify_approval_1 = __importDefault(require("./permissions/verify-approval"));
|
|
7
7
|
class ForestAdminClientWithCache {
|
|
8
|
-
constructor(options, permissionService, renderingPermissionService) {
|
|
8
|
+
constructor(options, permissionService, renderingPermissionService, contextVariablesInstantiator, chartHandler) {
|
|
9
9
|
this.options = options;
|
|
10
10
|
this.permissionService = permissionService;
|
|
11
11
|
this.renderingPermissionService = renderingPermissionService;
|
|
12
|
+
this.contextVariablesInstantiator = contextVariablesInstantiator;
|
|
13
|
+
this.chartHandler = chartHandler;
|
|
12
14
|
}
|
|
13
15
|
verifySignedActionParameters(signedParameters) {
|
|
14
16
|
return (0, verify_approval_1.default)(signedParameters, this.options.envSecret);
|
|
@@ -25,4 +27,4 @@ class ForestAdminClientWithCache {
|
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
29
|
exports.default = ForestAdminClientWithCache;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWFkbWluLWNsaWVudC13aXRoLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZvcmVzdC1hZG1pbi1jbGllbnQtd2l0aC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUlBLG9GQUFxRTtBQVFyRSxNQUFxQiwwQkFBMEI7SUFDN0MsWUFDcUIsT0FBNkMsRUFDaEQsaUJBQW9DLEVBQ2pDLDBCQUFzRCxFQUN6RCw0QkFBMEQsRUFDMUQsWUFBMEI7UUFKdkIsWUFBTyxHQUFQLE9BQU8sQ0FBc0M7UUFDaEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNqQywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQ3pELGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFDMUQsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDekMsQ0FBQztJQUVHLDRCQUE0QixDQUNqQyxnQkFBd0I7UUFFeEIsT0FBTyxJQUFBLHlCQUF3QixFQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFDcEIsV0FBVyxFQUNYLE1BQU0sRUFDTixjQUFjLEdBS2Y7UUFDQyxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUM7WUFDOUMsV0FBVztZQUNYLGNBQWM7WUFDZCxNQUFNO1NBQ1AsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLG1CQUFtQixDQUFDLFdBQTRCO1FBQ3JELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUNGO0FBbENELDZDQWtDQyJ9
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { ForestAdminClientOptions } from './types';
|
|
2
1
|
import ForestAdminClient from './forest-admin-client-with-cache';
|
|
2
|
+
import { ForestAdminClientOptions } from './types';
|
|
3
3
|
export { default as JTWTokenExpiredError } from './permissions/errors/jwt-token-expired-error';
|
|
4
4
|
export { default as JTWUnableToVerifyError } from './permissions/errors/jwt-unable-to-verify-error';
|
|
5
5
|
export { default as ChainedSQLQueryError } from './permissions/errors/chained-sql-query-error';
|
|
6
6
|
export { default as EmptySQLQueryError } from './permissions/errors/empty-sql-query-error';
|
|
7
7
|
export { default as NonSelectSQLQueryError } from './permissions/errors/non-select-sql-query-error';
|
|
8
|
-
export { ForestAdminClientOptions, Logger, LoggerLevel, ForestAdminClient } from './types';
|
|
8
|
+
export { ForestAdminClientOptions, Logger, LoggerLevel, ForestAdminClient, ChartHandlerInterface, ContextVariablesInstantiatorInterface, } from './types';
|
|
9
9
|
export { CollectionActionEvent } from './permissions/types';
|
|
10
10
|
export default function createForestAdminClient(options: ForestAdminClientOptions): ForestAdminClient;
|
|
11
11
|
export * from './charts/types';
|
|
12
|
+
export { default as ContextVariablesInjector } from './utils/context-variables-injector';
|
|
13
|
+
export { default as ContextVariables } from './utils/context-variables';
|
|
14
|
+
export { default as ChartHandler } from './charts/chart-handler';
|
|
12
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -17,12 +17,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.CollectionActionEvent = exports.NonSelectSQLQueryError = exports.EmptySQLQueryError = exports.ChainedSQLQueryError = exports.JTWUnableToVerifyError = exports.JTWTokenExpiredError = void 0;
|
|
21
|
-
const
|
|
20
|
+
exports.ChartHandler = exports.ContextVariables = exports.ContextVariablesInjector = exports.CollectionActionEvent = exports.NonSelectSQLQueryError = exports.EmptySQLQueryError = exports.ChainedSQLQueryError = exports.JTWUnableToVerifyError = exports.JTWTokenExpiredError = void 0;
|
|
21
|
+
const chart_handler_1 = __importDefault(require("./charts/chart-handler"));
|
|
22
22
|
const forest_admin_client_with_cache_1 = __importDefault(require("./forest-admin-client-with-cache"));
|
|
23
|
+
const action_permission_1 = __importDefault(require("./permissions/action-permission"));
|
|
23
24
|
const permission_with_cache_1 = __importDefault(require("./permissions/permission-with-cache"));
|
|
24
25
|
const rendering_permission_1 = __importDefault(require("./permissions/rendering-permission"));
|
|
25
26
|
const user_permission_1 = __importDefault(require("./permissions/user-permission"));
|
|
27
|
+
const context_variables_instantiator_1 = __importDefault(require("./utils/context-variables-instantiator"));
|
|
26
28
|
var jwt_token_expired_error_1 = require("./permissions/errors/jwt-token-expired-error");
|
|
27
29
|
Object.defineProperty(exports, "JTWTokenExpiredError", { enumerable: true, get: function () { return __importDefault(jwt_token_expired_error_1).default; } });
|
|
28
30
|
var jwt_unable_to_verify_error_1 = require("./permissions/errors/jwt-unable-to-verify-error");
|
|
@@ -47,8 +49,16 @@ function createForestAdminClient(options) {
|
|
|
47
49
|
const userPermission = new user_permission_1.default(optionsWithDefaults);
|
|
48
50
|
const renderingPermission = new rendering_permission_1.default(optionsWithDefaults, userPermission);
|
|
49
51
|
const permissionService = new permission_with_cache_1.default(actionPermission, renderingPermission);
|
|
50
|
-
|
|
52
|
+
const contextVariablesInstantiator = new context_variables_instantiator_1.default(renderingPermission);
|
|
53
|
+
const chartHandler = new chart_handler_1.default(contextVariablesInstantiator);
|
|
54
|
+
return new forest_admin_client_with_cache_1.default(optionsWithDefaults, permissionService, renderingPermission, contextVariablesInstantiator, chartHandler);
|
|
51
55
|
}
|
|
52
56
|
exports.default = createForestAdminClient;
|
|
53
57
|
__exportStar(require("./charts/types"), exports);
|
|
54
|
-
|
|
58
|
+
var context_variables_injector_1 = require("./utils/context-variables-injector");
|
|
59
|
+
Object.defineProperty(exports, "ContextVariablesInjector", { enumerable: true, get: function () { return __importDefault(context_variables_injector_1).default; } });
|
|
60
|
+
var context_variables_1 = require("./utils/context-variables");
|
|
61
|
+
Object.defineProperty(exports, "ContextVariables", { enumerable: true, get: function () { return __importDefault(context_variables_1).default; } });
|
|
62
|
+
var chart_handler_2 = require("./charts/chart-handler");
|
|
63
|
+
Object.defineProperty(exports, "ChartHandler", { enumerable: true, get: function () { return __importDefault(chart_handler_2).default; } });
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyRUFBa0Q7QUFDbEQsc0dBQWlFO0FBQ2pFLHdGQUFzRTtBQUN0RSxnR0FBb0U7QUFDcEUsOEZBQTRFO0FBQzVFLG9GQUFrRTtBQUVsRSw0R0FBa0Y7QUFFbEYsd0ZBQStGO0FBQXRGLGdKQUFBLE9BQU8sT0FBd0I7QUFDeEMsOEZBQW9HO0FBQTNGLHFKQUFBLE9BQU8sT0FBMEI7QUFDMUMsd0ZBQStGO0FBQXRGLGdKQUFBLE9BQU8sT0FBd0I7QUFDeEMsb0ZBQTJGO0FBQWxGLDRJQUFBLE9BQU8sT0FBc0I7QUFDdEMsOEZBQW9HO0FBQTNGLHFKQUFBLE9BQU8sT0FBMEI7QUFTMUMsNkNBQTREO0FBQW5ELDhHQUFBLHFCQUFxQixPQUFBO0FBRTlCLFNBQXdCLHVCQUF1QixDQUM3QyxPQUFpQztJQUVqQyxNQUFNLG1CQUFtQixHQUF5QztRQUNoRSxlQUFlLEVBQUUsNkJBQTZCO1FBQzlDLGlDQUFpQyxFQUFFLEVBQUUsR0FBRyxFQUFFO1FBQzFDLHNDQUFzQztRQUN0QyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNqRSxHQUFHLE9BQU87S0FDWCxDQUFDO0lBRUYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLDJCQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDMUUsTUFBTSxjQUFjLEdBQUcsSUFBSSx5QkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSw4QkFBMEIsQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNoRyxNQUFNLGlCQUFpQixHQUFHLElBQUksK0JBQWlCLENBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUN2RixNQUFNLDRCQUE0QixHQUFHLElBQUksd0NBQTRCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMzRixNQUFNLFlBQVksR0FBRyxJQUFJLHVCQUFZLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUVwRSxPQUFPLElBQUksd0NBQWlCLENBQzFCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLDRCQUE0QixFQUM1QixZQUFZLENBQ2IsQ0FBQztBQUNKLENBQUM7QUF6QkQsMENBeUJDO0FBRUQsaURBQStCO0FBQy9CLGlGQUF5RjtBQUFoRix1SkFBQSxPQUFPLE9BQTRCO0FBQzVDLCtEQUF3RTtBQUEvRCxzSUFBQSxPQUFPLE9BQW9CO0FBQ3BDLHdEQUFpRTtBQUF4RCw4SEFBQSxPQUFPLE9BQWdCIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EnvironmentPermissionsV4, RenderingPermissionV4, UserPermissionV4 } from './types';
|
|
2
1
|
import { ForestAdminClientOptionsWithDefaults } from '../types';
|
|
2
|
+
import { EnvironmentPermissionsV4, RenderingPermissionV4, UserPermissionV4 } from './types';
|
|
3
3
|
declare type HttpOptions = Pick<ForestAdminClientOptionsWithDefaults, 'envSecret' | 'forestServerUrl'>;
|
|
4
4
|
export default class ForestHttpApi {
|
|
5
5
|
static getEnvironmentPermissions(options: HttpOptions): Promise<EnvironmentPermissionsV4>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const types_1 = require("./types");
|
|
4
3
|
const generate_action_identifier_1 = require("./generate-action-identifier");
|
|
4
|
+
const types_1 = require("./types");
|
|
5
5
|
function generateCollectionPermissions(permissions) {
|
|
6
6
|
return Object.entries(permissions).reduce((acc, [collectionId, collectionPermissions]) => {
|
|
7
7
|
const { collection } = collectionPermissions;
|
|
@@ -84,4 +84,4 @@ function generateActionsFromPermissions(environmentPermissions, users) {
|
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
86
|
exports.default = generateActionsFromPermissions;
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtYWN0aW9ucy1mcm9tLXBlcm1pc3Npb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Blcm1pc3Npb25zL2dlbmVyYXRlLWFjdGlvbnMtZnJvbS1wZXJtaXNzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZFQUdzQztBQUN0QyxtQ0FVaUI7QUFZakIsU0FBUyw2QkFBNkIsQ0FDcEMsV0FBZ0Q7SUFFaEQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLEVBQUU7UUFDdkYsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLHFCQUFxQixDQUFDO1FBRTdDLE9BQU87WUFDTCxHQUFHLEdBQUc7WUFDTixDQUFDLElBQUEsK0RBQWtDLEVBQUMsNkJBQXFCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQzlFLFVBQVUsQ0FBQyxhQUFhO1lBQzFCLENBQUMsSUFBQSwrREFBa0MsRUFBQyw2QkFBcUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFDNUUsVUFBVSxDQUFDLFdBQVc7WUFDeEIsQ0FBQyxJQUFBLCtEQUFrQyxFQUFDLDZCQUFxQixDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUM1RSxVQUFVLENBQUMsV0FBVztZQUN4QixDQUFDLElBQUEsK0RBQWtDLEVBQUMsNkJBQXFCLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQzNFLFVBQVUsQ0FBQyxVQUFVO1lBQ3ZCLENBQUMsSUFBQSwrREFBa0MsRUFBQyw2QkFBcUIsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFDOUUsVUFBVSxDQUFDLGFBQWE7WUFDMUIsQ0FBQyxJQUFBLCtEQUFrQyxFQUFDLDZCQUFxQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxF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
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { Chart } from '../charts/types';
|
|
2
2
|
export declare function hashServerCharts(charts: Chart[]): Set<string>;
|
|
3
|
-
export declare function isGroupedByChart(chart: Chart): chart is Chart & {
|
|
4
|
-
groupByFieldName?: string;
|
|
5
|
-
};
|
|
6
3
|
export declare function hashChartRequest(chart: Chart): string;
|
|
7
4
|
//# sourceMappingURL=hash-chart.d.ts.map
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.hashChartRequest = exports.
|
|
6
|
+
exports.hashChartRequest = exports.hashServerCharts = void 0;
|
|
7
7
|
const object_hash_1 = __importDefault(require("object-hash"));
|
|
8
8
|
function hashChart(chart) {
|
|
9
9
|
const knownChartKeys = [
|
|
@@ -35,12 +35,8 @@ function hashServerCharts(charts) {
|
|
|
35
35
|
return new Set(hashes);
|
|
36
36
|
}
|
|
37
37
|
exports.hashServerCharts = hashServerCharts;
|
|
38
|
-
function isGroupedByChart(chart) {
|
|
39
|
-
return 'groupByFieldName' in chart;
|
|
40
|
-
}
|
|
41
|
-
exports.isGroupedByChart = isGroupedByChart;
|
|
42
38
|
function hashChartRequest(chart) {
|
|
43
39
|
return hashChart(chart);
|
|
44
40
|
}
|
|
45
41
|
exports.hashChartRequest = hashChartRequest;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJtaXNzaW9ucy9oYXNoLWNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhEQUFxQztBQUlyQyxTQUFTLFNBQVMsQ0FBQyxLQUFZO0lBQzdCLE1BQU0sY0FBYyxHQUFnQjtRQUNsQyxNQUFNO1FBQ04sVUFBVTtRQUNWLFlBQVk7UUFDWixPQUFPO1FBQ1AsZ0JBQWdCO1FBQ2hCLFFBQVE7UUFDUixzQkFBc0I7UUFDdEIsWUFBWTtRQUNaLG9CQUFvQjtRQUNwQixrQkFBa0I7UUFDbEIsdUJBQXVCO1FBQ3ZCLE9BQU87UUFDUCxXQUFXO1FBQ1gsV0FBVztRQUNYLGtCQUFrQjtRQUNsQixvQkFBb0I7S0FDckIsQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUFHLElBQUEscUJBQVUsRUFBQyxLQUFLLEVBQUU7UUFDN0IsV0FBVyxFQUFFLEtBQUs7UUFDbEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQ2pCLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBZ0IsQ0FBQztLQUNoRyxDQUFDLENBQUM7SUFFSCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxNQUFlO0lBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFckMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBSkQsNENBSUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFZO0lBQzNDLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFGRCw0Q0FFQyJ9
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Chart } from '../charts/types';
|
|
2
|
-
import { CollectionActionEvent } from './types';
|
|
3
2
|
import { PermissionService } from '../types';
|
|
4
3
|
import ActionPermission from './action-permission';
|
|
5
4
|
import RenderingPermissionService from './rendering-permission';
|
|
5
|
+
import { CollectionActionEvent } from './types';
|
|
6
6
|
export default class PermissionServiceWithCache implements PermissionService {
|
|
7
7
|
private readonly actionPermissionService;
|
|
8
8
|
private readonly renderingPermissionService;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const types_1 = require("./types");
|
|
4
3
|
const generate_action_identifier_1 = require("./generate-action-identifier");
|
|
4
|
+
const types_1 = require("./types");
|
|
5
5
|
class PermissionServiceWithCache {
|
|
6
6
|
constructor(actionPermissionService, renderingPermissionService) {
|
|
7
7
|
this.actionPermissionService = actionPermissionService;
|
|
@@ -37,4 +37,4 @@ class PermissionServiceWithCache {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
exports.default = PermissionServiceWithCache;
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi13aXRoLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Blcm1pc3Npb25zL3Blcm1pc3Npb24td2l0aC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLDZFQUdzQztBQUV0QyxtQ0FBbUU7QUFFbkUsTUFBcUIsMEJBQTBCO0lBQzdDLFlBQ21CLHVCQUF5QyxFQUN6QywwQkFBc0Q7UUFEdEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFrQjtRQUN6QywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO0lBQ3RFLENBQUM7SUFFRyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQzNCLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxHQUtOO1FBQ0MsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUNyQyxHQUFHLE1BQU0sRUFBRSxFQUNYLElBQUEsK0RBQWtDLEVBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxNQUtuQztRQUNDLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxFQUM1QixNQUFNLEVBQ04sY0FBYyxFQUNkLGdCQUFnQixHQUtqQjtRQUNDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FDckMsR0FBRyxNQUFNLEVBQUUsRUFDWCxJQUFBLDJEQUE4QixFQUFDLHlCQUFpQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsQ0FDNUYsQ0FBQztJQUNKLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxFQUM1QixNQUFNLEVBQ04sY0FBYyxFQUNkLGdCQUFnQixFQUNoQixXQUFXLEdBTVo7UUFDQyxNQUFNLGdCQUFnQixHQUNwQixXQUFXLEtBQUssTUFBTTtZQUNwQixDQUFDLENBQUMsSUFBQSwyREFBOEIsRUFDNUIseUJBQWlCLENBQUMsV0FBVyxFQUM3QixnQkFBZ0IsRUFDaEIsY0FBYyxDQUNmO1lBQ0gsQ0FBQyxDQUFDLElBQUEsMkRBQThCLEVBQzVCLHlCQUFpQixDQUFDLE9BQU8sRUFDekIsZ0JBQWdCLEVBQ2hCLGNBQWMsQ0FDZixDQUFDO1FBRVIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGdDQUFnQyxDQUFDLEVBQzVDLE1BQU0sRUFDTixjQUFjLEVBQ2QsZ0JBQWdCLEdBS2pCO1FBQ0MsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUU7WUFDeEQsSUFBQSwyREFBOEIsRUFBQyx5QkFBaUIsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDO1lBQzNGLElBQUEsMkRBQThCLEVBQzVCLHlCQUFpQixDQUFDLGVBQWUsRUFDakMsZ0JBQWdCLEVBQ2hCLGNBQWMsQ0FDZjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQzNCLFdBQVcsRUFDWCxNQUFNLEVBQ04sWUFBWSxHQUtiO1FBQ0MsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsZUFBZSxDQUFDO1lBQ3JELFdBQVc7WUFDWCxNQUFNO1lBQ04sWUFBWTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTFHRCw2Q0EwR0MifQ==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { GenericTree } from '@forestadmin/datasource-toolkit';
|
|
2
2
|
import { Chart } from '../charts/types';
|
|
3
|
-
import { CollectionRenderingPermissionV4, Team } from './types';
|
|
4
3
|
import { ForestAdminClientOptionsWithDefaults } from '../types';
|
|
4
|
+
import { CollectionRenderingPermissionV4, Team, UserPermissionV4 } from './types';
|
|
5
5
|
import UserPermissionService from './user-permission';
|
|
6
6
|
export declare type RenderingPermission = {
|
|
7
7
|
team: Team;
|
|
@@ -34,5 +34,7 @@ export default class RenderingPermissionService {
|
|
|
34
34
|
}): Promise<boolean>;
|
|
35
35
|
private canRetrieveChartHashOrRetry;
|
|
36
36
|
invalidateCache(renderingId: number | string): void;
|
|
37
|
+
getUser(userId: number | string): Promise<UserPermissionV4>;
|
|
38
|
+
getTeam(renderingId: number | string): Promise<Team>;
|
|
37
39
|
}
|
|
38
40
|
//# sourceMappingURL=rendering-permission.d.ts.map
|
|
@@ -4,11 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const lru_cache_1 = __importDefault(require("lru-cache"));
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const context_variables_1 = __importDefault(require("../utils/context-variables"));
|
|
8
|
+
const context_variables_injector_1 = __importDefault(require("../utils/context-variables-injector"));
|
|
9
9
|
const forest_http_api_1 = __importDefault(require("./forest-http-api"));
|
|
10
|
-
const
|
|
10
|
+
const hash_chart_1 = require("./hash-chart");
|
|
11
11
|
const is_segment_query_authorized_1 = __importDefault(require("./is-segment-query-authorized"));
|
|
12
|
+
const types_1 = require("./types");
|
|
12
13
|
const verify_sql_query_1 = __importDefault(require("./verify-sql-query"));
|
|
13
14
|
class RenderingPermissionService {
|
|
14
15
|
constructor(options, userPermissions) {
|
|
@@ -36,7 +37,7 @@ class RenderingPermissionService {
|
|
|
36
37
|
}
|
|
37
38
|
return null;
|
|
38
39
|
}
|
|
39
|
-
return
|
|
40
|
+
return context_variables_injector_1.default.injectContextInFilter(collectionPermissions.scope, new context_variables_1.default({ team: permissions.team, user: userInfo }));
|
|
40
41
|
}
|
|
41
42
|
async canExecuteSegmentQuery({ renderingId, collectionName, segmentQuery, }) {
|
|
42
43
|
return ((await this.canExecuteSegmentQueryOrRetry({
|
|
@@ -116,6 +117,13 @@ class RenderingPermissionService {
|
|
|
116
117
|
this.options.logger('Debug', `Invalidating rendering permissions cache for rendering ${renderingId}`);
|
|
117
118
|
this.permissionsByRendering.delete(`${renderingId}`);
|
|
118
119
|
}
|
|
120
|
+
async getUser(userId) {
|
|
121
|
+
return this.userPermissions.getUserInfo(userId);
|
|
122
|
+
}
|
|
123
|
+
async getTeam(renderingId) {
|
|
124
|
+
const permissions = await this.permissionsByRendering.fetch(`${renderingId}`);
|
|
125
|
+
return permissions.team;
|
|
126
|
+
}
|
|
119
127
|
}
|
|
120
128
|
exports.default = RenderingPermissionService;
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyaW5nLXBlcm1pc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVybWlzc2lvbnMvcmVuZGVyaW5nLXBlcm1pc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSwwREFBaUM7QUFJakMsbUZBQTBEO0FBQzFELHFHQUEyRTtBQUMzRSx3RUFBOEM7QUFDOUMsNkNBQWtFO0FBQ2xFLGdHQUFrRTtBQUNsRSxtQ0FBbUc7QUFFbkcsMEVBQWdEO0FBUWhELE1BQXFCLDBCQUEwQjtJQUc3QyxZQUNtQixPQUE2QyxFQUM3QyxlQUFzQztRQUR0QyxZQUFPLEdBQVAsT0FBTyxDQUFzQztRQUM3QyxvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUFFdkQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksbUJBQVEsQ0FBQztZQUN6QyxHQUFHLEVBQUUsR0FBRztZQUNSLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGlDQUFpQyxHQUFHLElBQUk7WUFDMUQsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUM7U0FDOUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFDcEIsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEdBS1A7UUFDQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUM1QixXQUFXLEVBQ1gsY0FBYyxFQUNkLE1BQU0sRUFDTixVQUFVLEdBTVg7UUFDQyxNQUFNLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxHQUE0QyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDekYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtB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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { GenericTree } from '@forestadmin/datasource-toolkit';
|
|
2
1
|
import type { Chart } from '../charts/types';
|
|
2
|
+
import type { GenericTree } from '@forestadmin/datasource-toolkit';
|
|
3
3
|
export declare type EnvironmentPermissionsV4 = EnvironmentPermissionsV4Remote | true;
|
|
4
4
|
export declare type RightDescriptionWithRolesV4 = {
|
|
5
5
|
roles: number[];
|
|
@@ -42,6 +42,7 @@ export declare type UserPermissionV4 = {
|
|
|
42
42
|
id: number;
|
|
43
43
|
firstName: string;
|
|
44
44
|
lastName: string;
|
|
45
|
+
fullName: string;
|
|
45
46
|
email: string;
|
|
46
47
|
permissionLevel: PermissionLevel;
|
|
47
48
|
tags: Record<string, string>;
|
|
@@ -24,4 +24,4 @@ var CustomActionEvent;
|
|
|
24
24
|
CustomActionEvent["SelfApprove"] = "self-approve";
|
|
25
25
|
CustomActionEvent["RequireApproval"] = "require-approval";
|
|
26
26
|
})(CustomActionEvent = exports.CustomActionEvent || (exports.CustomActionEvent = {}));
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVybWlzc2lvbnMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUNBLElBQVksZUFLWDtBQUxELFdBQVksZUFBZTtJQUN6QixrQ0FBZSxDQUFBO0lBQ2YsMENBQXVCLENBQUE7SUFDdkIsb0NBQWlCLENBQUE7SUFDakIsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFMVyxlQUFlLEdBQWYsdUJBQWUsS0FBZix1QkFBZSxRQUsxQjtBQWFELElBQVkscUJBT1g7QUFQRCxXQUFZLHFCQUFxQjtJQUMvQiwwQ0FBaUIsQ0FBQTtJQUNqQiwwQ0FBaUIsQ0FBQTtJQUNqQixzQ0FBYSxDQUFBO0lBQ2Isc0NBQWEsQ0FBQTtJQUNiLDBDQUFpQixDQUFBO0lBQ2pCLG9DQUFXLENBQUE7QUFDYixDQUFDLEVBUFcscUJBQXFCLEdBQXJCLDZCQUFxQixLQUFyQiw2QkFBcUIsUUFPaEM7QUFFRCxJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDM0Isd0NBQW1CLENBQUE7SUFDbkIsd0NBQW1CLENBQUE7SUFDbkIsaURBQTRCLENBQUE7SUFDNUIseURBQW9DLENBQUE7QUFDdEMsQ0FBQyxFQUxXLGlCQUFpQixHQUFqQix5QkFBaUIsS0FBakIseUJBQWlCLFFBSzVCIn0=
|
|
@@ -33,4 +33,4 @@ class UserPermissionService {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
exports.default = UserPermissionService;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Blcm1pc3Npb25zL3VzZXItcGVybWlzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHdFQUE4QztBQUc5QyxNQUFxQixxQkFBcUI7SUFReEMsWUFBNkIsT0FBNkM7UUFBN0MsWUFBTyxHQUFQLE9BQU8sQ0FBc0M7UUFQbEUsNkJBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLGlFQUFpRTtRQUNqRSwyREFBMkQ7UUFDM0Qsb0RBQW9EO1FBQzVDLGlCQUFZLEdBQTJDLElBQUksQ0FBQztJQUVTLENBQUM7SUFFdkUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUF1QjtRQUM5QyxJQUNFLENBQUMsSUFBSSxDQUFDLHdCQUF3QjtZQUM5QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMxQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFDM0M7WUFDQSxJQUFJLENBQUMsd0JBQXdCO2dCQUMzQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsR0FBRyxJQUFJLENBQUM7WUFFckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLG1DQUFtQyxDQUFDLENBQUM7WUFFbEUsbUVBQW1FO1lBQ25FLG9FQUFvRTtZQUNwRSxxQ0FBcUM7WUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyx5QkFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUMzRCxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDMUQsQ0FBQztTQUNIO1FBRUQsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0lBQzNELENBQUM7Q0FDRjtBQXBDRCx3Q0FvQ0MifQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ChartRequest } from './charts/chart-handler';
|
|
2
2
|
import type { Chart } from './charts/types';
|
|
3
3
|
import type { CollectionActionEvent } from './permissions/types';
|
|
4
|
+
import type { GenericTree } from '@forestadmin/datasource-toolkit';
|
|
5
|
+
import ContextVariables, { RequestContextVariables } from './utils/context-variables';
|
|
4
6
|
export declare type LoggerLevel = 'Debug' | 'Info' | 'Warn' | 'Error';
|
|
5
7
|
export declare type Logger = (level: LoggerLevel, message: unknown) => void;
|
|
6
8
|
export declare type ForestAdminClientOptions = {
|
|
@@ -12,6 +14,8 @@ export declare type ForestAdminClientOptions = {
|
|
|
12
14
|
export declare type ForestAdminClientOptionsWithDefaults = Required<ForestAdminClientOptions>;
|
|
13
15
|
export interface ForestAdminClient {
|
|
14
16
|
readonly permissionService: PermissionService;
|
|
17
|
+
readonly contextVariablesInstantiator: ContextVariablesInstantiatorInterface;
|
|
18
|
+
readonly chartHandler: ChartHandlerInterface;
|
|
15
19
|
verifySignedActionParameters<TSignedParameters>(signedParameters: string): TSignedParameters;
|
|
16
20
|
getScope(params: {
|
|
17
21
|
renderingId: number | string;
|
|
@@ -54,4 +58,18 @@ export interface PermissionService {
|
|
|
54
58
|
segmentQuery: string;
|
|
55
59
|
}): Promise<boolean>;
|
|
56
60
|
}
|
|
61
|
+
export interface ChartHandlerInterface {
|
|
62
|
+
getChartWithContextInjected(params: {
|
|
63
|
+
userId: string | number;
|
|
64
|
+
renderingId: string | number;
|
|
65
|
+
chartRequest: ChartRequest;
|
|
66
|
+
}): Promise<Chart>;
|
|
67
|
+
}
|
|
68
|
+
export interface ContextVariablesInstantiatorInterface {
|
|
69
|
+
buildContextVariables(params: {
|
|
70
|
+
requestContextVariables?: RequestContextVariables;
|
|
71
|
+
renderingId: string | number;
|
|
72
|
+
userId: string | number;
|
|
73
|
+
}): Promise<ContextVariables>;
|
|
74
|
+
}
|
|
57
75
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AggregatedChart, ApiRouteChart, Chart, FilterableChart, GroupedByChart, LeaderboardChart, LineChart, ObjectiveChart } from '../charts/types';
|
|
2
|
+
export default class ChartDetector {
|
|
3
|
+
static isAPIRouteChart(chart: Chart): chart is ApiRouteChart;
|
|
4
|
+
static isLineChart(chart: Chart): chart is LineChart;
|
|
5
|
+
static isObjectiveChart(chart: Chart): chart is ObjectiveChart;
|
|
6
|
+
static isLeaderboardChart(chart: Chart): chart is LeaderboardChart;
|
|
7
|
+
static isFilterableChart(chart: Chart): chart is FilterableChart & Chart;
|
|
8
|
+
static isAggregatedChart(chart: Chart): chart is AggregatedChart & Chart;
|
|
9
|
+
static isGroupedByChart(chart: Chart): chart is GroupedByChart & Chart;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=chart-detector.d.ts.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const types_1 = require("../charts/types");
|
|
4
|
+
class ChartDetector {
|
|
5
|
+
static isAPIRouteChart(chart) {
|
|
6
|
+
return 'apiRoute' in chart;
|
|
7
|
+
}
|
|
8
|
+
static isLineChart(chart) {
|
|
9
|
+
return chart.type === types_1.ChartType.Line;
|
|
10
|
+
}
|
|
11
|
+
static isObjectiveChart(chart) {
|
|
12
|
+
return chart.type === types_1.ChartType.Objective;
|
|
13
|
+
}
|
|
14
|
+
static isLeaderboardChart(chart) {
|
|
15
|
+
return chart.type === types_1.ChartType.Leaderboard;
|
|
16
|
+
}
|
|
17
|
+
static isFilterableChart(chart) {
|
|
18
|
+
return 'filter' in chart;
|
|
19
|
+
}
|
|
20
|
+
static isAggregatedChart(chart) {
|
|
21
|
+
return 'aggregator' in chart;
|
|
22
|
+
}
|
|
23
|
+
static isGroupedByChart(chart) {
|
|
24
|
+
return 'groupByFieldName' in chart;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.default = ChartDetector;
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtZGV0ZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY2hhcnQtZGV0ZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSwyQ0FBNEM7QUFFNUMsTUFBcUIsYUFBYTtJQUN6QixNQUFNLENBQUMsZUFBZSxDQUFDLEtBQVk7UUFDeEMsT0FBTyxVQUFVLElBQUksS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQVk7UUFDcEMsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLGlCQUFTLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBWTtRQUN6QyxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssaUJBQVMsQ0FBQyxTQUFTLENBQUM7SUFDNUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFZO1FBQzNDLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxpQkFBUyxDQUFDLFdBQVcsQ0FBQztJQUM5QyxDQUFDO0lBRU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQVk7UUFDMUMsT0FBTyxRQUFRLElBQUksS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBWTtRQUMxQyxPQUFPLFlBQVksSUFBSSxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFZO1FBQ3pDLE9BQU8sa0JBQWtCLElBQUksS0FBSyxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQTVCRCxnQ0E0QkMifQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PlainConditionTreeBranch, PlainConditionTreeLeaf } from '@forestadmin/datasource-toolkit';
|
|
2
|
+
import ContextVariables from './context-variables';
|
|
3
|
+
export default class ContextVariablesInjector {
|
|
4
|
+
private static isPlainConditionTreeBranch;
|
|
5
|
+
static injectContextInValue<ValueType>(value: ValueType, contextVariables: ContextVariables): ValueType;
|
|
6
|
+
static injectContextInFilter<PlainConditionTree extends PlainConditionTreeBranch | PlainConditionTreeLeaf | null>(filter: PlainConditionTree, contextVariables: ContextVariables): PlainConditionTree;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=context-variables-injector.d.ts.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class ContextVariablesInjector {
|
|
4
|
+
static isPlainConditionTreeBranch(filter) {
|
|
5
|
+
return 'aggregator' in filter;
|
|
6
|
+
}
|
|
7
|
+
static injectContextInValue(value, contextVariables) {
|
|
8
|
+
if (typeof value !== 'string') {
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
let valueWithContextVariablesInjected = value;
|
|
12
|
+
const regex = /{{([^}]+)}}/g;
|
|
13
|
+
let match = regex.exec(value);
|
|
14
|
+
while (match) {
|
|
15
|
+
const contextVariableKey = match[1];
|
|
16
|
+
const contextValue = contextVariables.getValue(contextVariableKey);
|
|
17
|
+
valueWithContextVariablesInjected = valueWithContextVariablesInjected.replace(new RegExp(`{{${contextVariableKey}}}`, 'g'), String(contextValue));
|
|
18
|
+
match = regex.exec(value);
|
|
19
|
+
}
|
|
20
|
+
return valueWithContextVariablesInjected;
|
|
21
|
+
}
|
|
22
|
+
static injectContextInFilter(filter, contextVariables) {
|
|
23
|
+
if (!filter) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
if (ContextVariablesInjector.isPlainConditionTreeBranch(filter)) {
|
|
27
|
+
return {
|
|
28
|
+
...filter,
|
|
29
|
+
conditions: filter.conditions.map(condition => {
|
|
30
|
+
return this.injectContextInFilter(condition, contextVariables);
|
|
31
|
+
}),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
...filter,
|
|
36
|
+
value: this.injectContextInValue(filter.value, contextVariables),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.default = ContextVariablesInjector;
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC12YXJpYWJsZXMtaW5qZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY29udGV4dC12YXJpYWJsZXMtaW5qZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSxNQUFxQix3QkFBd0I7SUFDbkMsTUFBTSxDQUFDLDBCQUEwQixDQUN2QyxNQUF5RDtRQUV6RCxPQUFPLFlBQVksSUFBSSxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDaEMsS0FBZ0IsRUFDaEIsZ0JBQWtDO1FBRWxDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLGlDQUFpQyxHQUFXLEtBQUssQ0FBQztRQUN0RCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUM7UUFDN0IsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixPQUFPLEtBQUssRUFBRTtZQUNaLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRW5FLGlDQUFpQyxHQUFHLGlDQUFpQyxDQUFDLE9BQU8sQ0FDM0UsSUFBSSxNQUFNLENBQUMsS0FBSyxrQkFBa0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUM1QyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQ3JCLENBQUM7WUFDRixLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQjtRQUVELE9BQU8saUNBQXlELENBQUM7SUFDbkUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxxQkFBcUIsQ0FFakMsTUFBMEIsRUFBRSxnQkFBa0M7UUFDOUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLHdCQUF3QixDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQy9ELE9BQU87Z0JBQ0wsR0FBRyxNQUFNO2dCQUNULFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDNUMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQzthQUNILENBQUM7U0FDSDtRQUVELE9BQU87WUFDTCxHQUFHLE1BQU07WUFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7U0FDakUsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXRERCwyQ0FzREMifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import RenderingPermissionService from '../permissions/rendering-permission';
|
|
2
|
+
import { ContextVariablesInstantiatorInterface } from '../types';
|
|
3
|
+
import ContextVariables, { RequestContextVariables } from './context-variables';
|
|
4
|
+
export default class ContextVariablesInstantiator implements ContextVariablesInstantiatorInterface {
|
|
5
|
+
private readonly renderingPermissionService;
|
|
6
|
+
constructor(renderingPermissionService: RenderingPermissionService);
|
|
7
|
+
buildContextVariables({ requestContextVariables, renderingId, userId, }: {
|
|
8
|
+
requestContextVariables?: RequestContextVariables;
|
|
9
|
+
renderingId: string | number;
|
|
10
|
+
userId: string | number;
|
|
11
|
+
}): Promise<ContextVariables>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=context-variables-instantiator.d.ts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const context_variables_1 = __importDefault(require("./context-variables"));
|
|
7
|
+
class ContextVariablesInstantiator {
|
|
8
|
+
constructor(renderingPermissionService) {
|
|
9
|
+
this.renderingPermissionService = renderingPermissionService;
|
|
10
|
+
}
|
|
11
|
+
async buildContextVariables({ requestContextVariables = {}, renderingId, userId, }) {
|
|
12
|
+
const team = await this.renderingPermissionService.getTeam(renderingId);
|
|
13
|
+
const user = await this.renderingPermissionService.getUser(userId);
|
|
14
|
+
return new context_variables_1.default({ requestContextVariables, team, user });
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.default = ContextVariablesInstantiator;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC12YXJpYWJsZXMtaW5zdGFudGlhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NvbnRleHQtdmFyaWFibGVzLWluc3RhbnRpYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLDRFQUFnRjtBQUVoRixNQUFxQiw0QkFBNEI7SUFDL0MsWUFBNkIsMEJBQXNEO1FBQXRELCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7SUFBRyxDQUFDO0lBRWhGLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxFQUNqQyx1QkFBdUIsR0FBRyxFQUFFLEVBQzVCLFdBQVcsRUFDWCxNQUFNLEdBS1A7UUFDQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5FLE9BQU8sSUFBSSwyQkFBZ0IsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Q0FDRjtBQWpCRCwrQ0FpQkMifQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Team, UserPermissionV4 } from '../permissions/types';
|
|
2
|
+
export declare type RequestContextVariables = {
|
|
3
|
+
[key: string]: string | number | boolean;
|
|
4
|
+
};
|
|
5
|
+
export default class ContextVariables {
|
|
6
|
+
private requestContextVariables;
|
|
7
|
+
private team;
|
|
8
|
+
private user;
|
|
9
|
+
constructor({ requestContextVariables, team, user, }: {
|
|
10
|
+
requestContextVariables?: RequestContextVariables;
|
|
11
|
+
team: Team;
|
|
12
|
+
user: UserPermissionV4;
|
|
13
|
+
});
|
|
14
|
+
private getCurrentUserData;
|
|
15
|
+
getValue(contextVariableKey: string): unknown;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=context-variables.d.ts.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const USER_VALUE_PREFIX = 'currentUser.';
|
|
4
|
+
const USER_VALUE_TAG_PREFIX = 'currentUser.tags.';
|
|
5
|
+
const USER_VALUE_TEAM_PREFIX = 'currentUser.team.';
|
|
6
|
+
class ContextVariables {
|
|
7
|
+
constructor({ requestContextVariables = {}, team, user, }) {
|
|
8
|
+
this.requestContextVariables = requestContextVariables;
|
|
9
|
+
this.team = team;
|
|
10
|
+
this.user = user;
|
|
11
|
+
}
|
|
12
|
+
getCurrentUserData(contextVariableKey) {
|
|
13
|
+
if (contextVariableKey.startsWith(USER_VALUE_TEAM_PREFIX)) {
|
|
14
|
+
return this.team[contextVariableKey.substring(USER_VALUE_TEAM_PREFIX.length)];
|
|
15
|
+
}
|
|
16
|
+
if (contextVariableKey.startsWith(USER_VALUE_TAG_PREFIX)) {
|
|
17
|
+
return this.user?.tags?.[contextVariableKey.substring(USER_VALUE_TAG_PREFIX.length)];
|
|
18
|
+
}
|
|
19
|
+
return this.user?.[contextVariableKey.substring(USER_VALUE_PREFIX.length)];
|
|
20
|
+
}
|
|
21
|
+
getValue(contextVariableKey) {
|
|
22
|
+
if (contextVariableKey.startsWith(USER_VALUE_PREFIX)) {
|
|
23
|
+
return this.getCurrentUserData(contextVariableKey);
|
|
24
|
+
}
|
|
25
|
+
return this.requestContextVariables[contextVariableKey];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = ContextVariables;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC12YXJpYWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY29udGV4dC12YXJpYWJsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztBQUN6QyxNQUFNLHFCQUFxQixHQUFHLG1CQUFtQixDQUFDO0FBQ2xELE1BQU0sc0JBQXNCLEdBQUcsbUJBQW1CLENBQUM7QUFFbkQsTUFBcUIsZ0JBQWdCO0lBS25DLFlBQVksRUFDVix1QkFBdUIsR0FBRyxFQUFFLEVBQzVCLElBQUksRUFDSixJQUFJLEdBS0w7UUFDQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFDdkQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVPLGtCQUFrQixDQUFDLGtCQUEwQjtRQUNuRCxJQUFJLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1lBQ3pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUMvRTtRQUVELElBQUksa0JBQWtCLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEVBQUU7WUFDeEQsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3RGO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVNLFFBQVEsQ0FBQyxrQkFBMEI7UUFDeEMsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUNwRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7QUF0Q0QsbUNBc0NDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/forestadmin-client",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.4",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"test": "jest"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@forestadmin/datasource-toolkit": "1.
|
|
32
|
+
"@forestadmin/datasource-toolkit": "1.1.1-alpha.1",
|
|
33
33
|
"@types/jsonwebtoken": "^8.5.8",
|
|
34
34
|
"@types/lru-cache": "^7.6.1",
|
|
35
35
|
"@types/superagent": "^4.1.15",
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { GenericTree } from '@forestadmin/datasource-toolkit';
|
|
2
|
-
import { Team, UserPermissionV4 } from './types';
|
|
3
|
-
export default function generateUserScope(filter: GenericTree | null, team: Team, user: UserPermissionV4): GenericTree;
|
|
4
|
-
//# sourceMappingURL=generate-user-scope.d.ts.map
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const USER_VALUE_PREFIX = '$currentUser.';
|
|
4
|
-
const USER_VALUE_TAG_PREFIX = '$currentUser.tags.';
|
|
5
|
-
const USER_VALUE_TEAM_PREFIX = '$currentUser.team.';
|
|
6
|
-
function generateUserValue(value, team, user) {
|
|
7
|
-
if (typeof value !== 'string' || !value.startsWith(USER_VALUE_PREFIX)) {
|
|
8
|
-
return value;
|
|
9
|
-
}
|
|
10
|
-
if (value.startsWith(USER_VALUE_TEAM_PREFIX)) {
|
|
11
|
-
return team[value.slice(USER_VALUE_TEAM_PREFIX.length)];
|
|
12
|
-
}
|
|
13
|
-
if (value.startsWith(USER_VALUE_TAG_PREFIX)) {
|
|
14
|
-
return user?.tags?.[value.substring(USER_VALUE_TAG_PREFIX.length)];
|
|
15
|
-
}
|
|
16
|
-
return user?.[value.substring(USER_VALUE_PREFIX.length)];
|
|
17
|
-
}
|
|
18
|
-
function generateUserScope(filter, team, user) {
|
|
19
|
-
if (!filter) {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
const branch = filter;
|
|
23
|
-
if (branch.aggregator) {
|
|
24
|
-
return {
|
|
25
|
-
...filter,
|
|
26
|
-
conditions: branch.conditions.map(condition => generateUserScope(condition, team, user)),
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
const leaf = filter;
|
|
30
|
-
return {
|
|
31
|
-
...filter,
|
|
32
|
-
value: generateUserValue(leaf.value, team, user),
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
exports.default = generateUserScope;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtdXNlci1zY29wZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJtaXNzaW9ucy9nZW5lcmF0ZS11c2VyLXNjb3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFDMUMsTUFBTSxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQztBQUNuRCxNQUFNLHNCQUFzQixHQUFHLG9CQUFvQixDQUFDO0FBRXBELFNBQVMsaUJBQWlCLENBQUMsS0FBdUIsRUFBRSxJQUFVLEVBQUUsSUFBc0I7SUFDcEYsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7UUFDckUsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1FBQzVDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztLQUN6RDtJQUVELElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO1FBQzNDLE9BQU8sSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztLQUNwRTtJQUVELE9BQU8sSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxTQUF3QixpQkFBaUIsQ0FDdkMsTUFBMEIsRUFDMUIsSUFBVSxFQUNWLElBQXNCO0lBRXRCLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDWCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBMkIsQ0FBQztJQUUzQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDckIsT0FBTztZQUNMLEdBQUcsTUFBTTtZQUNULFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDekYsQ0FBQztLQUNIO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBeUIsQ0FBQztJQUV2QyxPQUFPO1FBQ0wsR0FBRyxNQUFNO1FBQ1QsS0FBSyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztLQUNqRCxDQUFDO0FBQ0osQ0FBQztBQXhCRCxvQ0F3QkMifQ==
|