@forestadmin/forestadmin-client 1.0.7 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/permissions/action-permission.d.ts +5 -1
- package/dist/permissions/action-permission.js +19 -1
- package/dist/permissions/generate-actions-from-permissions.d.ts +2 -1
- package/dist/permissions/generate-actions-from-permissions.js +44 -16
- package/dist/permissions/permission-with-cache.d.ts +28 -0
- package/dist/permissions/permission-with-cache.js +23 -1
- package/dist/permissions/types.d.ts +16 -0
- package/dist/permissions/types.js +1 -1
- package/dist/types.d.ts +29 -1
- package/package.json +2 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ForestAdminClientOptionsWithDefaults } from '../types';
|
|
1
|
+
import type { ForestAdminClientOptionsWithDefaults } from '../types';
|
|
2
|
+
import type { RawTreeWithSources } from './types';
|
|
2
3
|
export default class ActionPermissionService {
|
|
3
4
|
private readonly options;
|
|
4
5
|
private permissionsPromise;
|
|
@@ -11,5 +12,8 @@ export default class ActionPermissionService {
|
|
|
11
12
|
private isAllowed;
|
|
12
13
|
private getPermissions;
|
|
13
14
|
private fetchEnvironmentPermissions;
|
|
15
|
+
getCustomActionCondition(roleId: number, actionName: string): Promise<RawTreeWithSources | undefined>;
|
|
16
|
+
getAllCustomActionConditions(actionName: string): Promise<Map<number, RawTreeWithSources> | undefined>;
|
|
17
|
+
getRoleIdsAllowedToApproveWithoutConditions(actionName: string): Promise<Array<number>>;
|
|
14
18
|
}
|
|
15
19
|
//# sourceMappingURL=action-permission.d.ts.map
|
|
@@ -62,6 +62,24 @@ class ActionPermissionService {
|
|
|
62
62
|
const rawPermissions = await forest_http_api_1.default.getEnvironmentPermissions(this.options);
|
|
63
63
|
return (0, generate_actions_from_permissions_1.default)(rawPermissions);
|
|
64
64
|
}
|
|
65
|
+
async getCustomActionCondition(roleId, actionName) {
|
|
66
|
+
const permissions = await this.getPermissions();
|
|
67
|
+
const conditionFilter = permissions.actionsByRole.get(actionName)?.conditionsByRole.get(roleId);
|
|
68
|
+
return conditionFilter;
|
|
69
|
+
}
|
|
70
|
+
async getAllCustomActionConditions(actionName) {
|
|
71
|
+
const permissions = await this.getPermissions();
|
|
72
|
+
return permissions.actionsByRole.get(actionName)?.conditionsByRole;
|
|
73
|
+
}
|
|
74
|
+
async getRoleIdsAllowedToApproveWithoutConditions(actionName) {
|
|
75
|
+
const permissions = await this.getPermissions();
|
|
76
|
+
const approvalPermission = permissions.actionsByRole.get(actionName);
|
|
77
|
+
if (!approvalPermission) {
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
// All allowed roles excluding the one with conditions
|
|
81
|
+
return Array.from(approvalPermission.allowedRoles).filter(roleId => !approvalPermission.conditionsByRole?.has(roleId));
|
|
82
|
+
}
|
|
65
83
|
}
|
|
66
84
|
exports.default = ActionPermissionService;
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXBlcm1pc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVybWlzc2lvbnMvYWN0aW9uLXBlcm1pc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSx3RUFBOEM7QUFDOUMsNEdBRTZDO0FBRTdDLE1BQXFCLHVCQUF1QjtJQUkxQyxZQUE2QixPQUE2QztRQUE3QyxZQUFPLEdBQVAsT0FBTyxDQUFzQztJQUFHLENBQUM7SUFFdkUsUUFBUSxDQUFDLE1BQWMsRUFBRSxXQUFxQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztZQUNqQyxNQUFNO1lBQ04sV0FBVztZQUNYLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxHQUFHLENBQUMsTUFBYyxFQUFFLFVBQWtCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQ2pDLE1BQU07WUFDTixXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDekIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUNuQyxNQUFNLEVBQ04sV0FBVyxFQUNYLFlBQVksR0FLYjtRQUNDLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFNUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxZQUFZLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztZQUNwQyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsU0FBUyxDQUFDO1lBRS9DLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO2dCQUNqQyxNQUFNO2dCQUNOLFdBQVc7Z0JBQ1gs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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EnvironmentPermissionsV4 } from './types';
|
|
1
|
+
import { EnvironmentPermissionsV4, RawTreeWithSources } from './types';
|
|
2
2
|
export declare type ActionPermissions = {
|
|
3
3
|
everythingAllowed: boolean;
|
|
4
4
|
actionsGloballyAllowed: Set<string>;
|
|
@@ -6,6 +6,7 @@ export declare type ActionPermissions = {
|
|
|
6
6
|
};
|
|
7
7
|
export declare type ActionPermission = {
|
|
8
8
|
allowedRoles: Set<number>;
|
|
9
|
+
conditionsByRole?: Map<number, RawTreeWithSources>;
|
|
9
10
|
};
|
|
10
11
|
export default function generateActionsFromPermissions(environmentPermissions: EnvironmentPermissionsV4): ActionPermissions;
|
|
11
12
|
//# sourceMappingURL=generate-actions-from-permissions.d.ts.map
|
|
@@ -7,24 +7,47 @@ function generateCollectionPermissions(permissions) {
|
|
|
7
7
|
const { collection } = collectionPermissions;
|
|
8
8
|
return {
|
|
9
9
|
...acc,
|
|
10
|
-
[(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Browse, collectionId)]:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
[(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
[(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Browse, collectionId)]: {
|
|
11
|
+
description: collection.browseEnabled,
|
|
12
|
+
},
|
|
13
|
+
[(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Read, collectionId)]: {
|
|
14
|
+
description: collection.readEnabled,
|
|
15
|
+
},
|
|
16
|
+
[(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Edit, collectionId)]: {
|
|
17
|
+
description: collection.editEnabled,
|
|
18
|
+
},
|
|
19
|
+
[(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Add, collectionId)]: {
|
|
20
|
+
description: collection.addEnabled,
|
|
21
|
+
},
|
|
22
|
+
[(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Delete, collectionId)]: {
|
|
23
|
+
description: collection.deleteEnabled,
|
|
24
|
+
},
|
|
25
|
+
[(0, generate_action_identifier_1.generateCollectionActionIdentifier)(types_1.CollectionActionEvent.Export, collectionId)]: {
|
|
26
|
+
description: collection.exportEnabled,
|
|
27
|
+
},
|
|
16
28
|
};
|
|
17
29
|
}, {});
|
|
18
30
|
}
|
|
19
|
-
function
|
|
31
|
+
function generateCustomActionPermission(collectionId, actions) {
|
|
20
32
|
return Object.entries(actions).reduce((acc, [actionName, actionPermissions]) => {
|
|
21
33
|
return {
|
|
22
34
|
...acc,
|
|
23
35
|
...{
|
|
24
|
-
[(0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Approve, actionName, collectionId)]:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
36
|
+
[(0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Approve, actionName, collectionId)]: {
|
|
37
|
+
description: actionPermissions.userApprovalEnabled,
|
|
38
|
+
conditions: actionPermissions.userApprovalConditions,
|
|
39
|
+
},
|
|
40
|
+
[(0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.SelfApprove, actionName, collectionId)]: {
|
|
41
|
+
description: actionPermissions.selfApprovalEnabled,
|
|
42
|
+
},
|
|
43
|
+
[(0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Trigger, actionName, collectionId)]: {
|
|
44
|
+
description: actionPermissions.triggerEnabled,
|
|
45
|
+
conditions: actionPermissions.triggerConditions,
|
|
46
|
+
},
|
|
47
|
+
[(0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.RequireApproval, actionName, collectionId)]: {
|
|
48
|
+
description: actionPermissions.approvalRequired,
|
|
49
|
+
conditions: actionPermissions.approvalRequiredConditions,
|
|
50
|
+
},
|
|
28
51
|
},
|
|
29
52
|
};
|
|
30
53
|
}, {});
|
|
@@ -34,22 +57,27 @@ function generateActionPermissions(permissions) {
|
|
|
34
57
|
const { actions } = collectionPermissions;
|
|
35
58
|
return {
|
|
36
59
|
...acc,
|
|
37
|
-
...
|
|
60
|
+
...generateCustomActionPermission(collectionId, actions),
|
|
38
61
|
};
|
|
39
62
|
}, {});
|
|
40
63
|
}
|
|
41
64
|
function generateActionsGloballyAllowed(permissions) {
|
|
42
65
|
return new Set(Object.entries(permissions)
|
|
43
|
-
.filter(([, permission]) => permission === true)
|
|
66
|
+
.filter(([, permission]) => permission.description === true)
|
|
44
67
|
.map(([action]) => action));
|
|
45
68
|
}
|
|
46
69
|
function generateActionsByRole(permissions) {
|
|
47
70
|
return new Map(Object.entries(permissions)
|
|
48
|
-
.filter(([, permission]) => typeof permission !== 'boolean')
|
|
71
|
+
.filter(([, permission]) => typeof permission.description !== 'boolean')
|
|
49
72
|
.map(([name, permission]) => [
|
|
50
73
|
name,
|
|
51
74
|
{
|
|
52
|
-
allowedRoles: new Set(permission.roles),
|
|
75
|
+
allowedRoles: new Set(permission.description.roles),
|
|
76
|
+
...(permission.conditions
|
|
77
|
+
? {
|
|
78
|
+
conditionsByRole: new Map(permission.conditions?.map(({ roleId, filter }) => [roleId, filter])),
|
|
79
|
+
}
|
|
80
|
+
: {}),
|
|
53
81
|
},
|
|
54
82
|
]));
|
|
55
83
|
}
|
|
@@ -73,4 +101,4 @@ function generateActionsFromPermissions(environmentPermissions) {
|
|
|
73
101
|
};
|
|
74
102
|
}
|
|
75
103
|
exports.default = generateActionsFromPermissions;
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGUtYWN0aW9ucy1mcm9tLXBlcm1pc3Npb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Blcm1pc3Npb25zL2dlbmVyYXRlLWFjdGlvbnMtZnJvbS1wZXJtaXNzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZFQUdzQztBQUN0QyxtQ0FXaUI7QUFvQmpCLFNBQVMsNkJBQTZCLENBQ3BDLFdBQWdEO0lBRWhELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUMsRUFBRSxFQUFFO1FBQ3ZGLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxxQkFBcUIsQ0FBQztRQUU3QyxPQUFPO1lBQ0wsR0FBRyxHQUFHO1lBQ04sQ0FBQyxJQUFBLCtEQUFrQyxFQUFDLDZCQUFxQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFO2dCQUNoRixXQUFXLEVBQUUsVUFBVSxDQUFDLGFBQWE7YUFDdEM7WUFDRCxDQUFDLElBQUEsK0RBQWtDLEVBQUMsNkJBQXFCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUU7Z0JBQzlFLFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVzthQUNwQztZQUNELENBQUMsSUFBQSwrREFBa0MsRUFBQyw2QkFBcUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRTtnQkFDOUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxXQUFXO2FBQ3BDO1lBQ0QsQ0FBQyxJQUFBLCtEQUFrQyxFQUFDLDZCQUFxQixDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxFQUFFO2dCQUM3RSxXQUFXLEVBQUUsVUFBVSxDQUFDLFVBQVU7YUFDbkM7WUFDRCxDQUFDLElBQUEsK0RBQWtDLEVBQUMsNkJBQXFCLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVB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
|
|
@@ -23,12 +23,40 @@ export default class PermissionServiceWithCache implements PermissionService {
|
|
|
23
23
|
customActionName: string;
|
|
24
24
|
collectionName: string;
|
|
25
25
|
}): Promise<boolean>;
|
|
26
|
+
doesTriggerCustomActionRequiresApproval({ userId, collectionName, customActionName, }: {
|
|
27
|
+
userId: number;
|
|
28
|
+
customActionName: string;
|
|
29
|
+
collectionName: string;
|
|
30
|
+
}): Promise<boolean>;
|
|
26
31
|
canApproveCustomAction({ userId, collectionName, customActionName, requesterId, }: {
|
|
27
32
|
userId: number;
|
|
28
33
|
customActionName: string;
|
|
29
34
|
collectionName: string;
|
|
30
35
|
requesterId: number;
|
|
31
36
|
}): Promise<boolean>;
|
|
37
|
+
getConditionalTriggerCondition({ userId, collectionName, customActionName, }: {
|
|
38
|
+
userId: number;
|
|
39
|
+
customActionName: string;
|
|
40
|
+
collectionName: string;
|
|
41
|
+
}): Promise<import("./types").RawTreeWithSources>;
|
|
42
|
+
getConditionalRequiresApprovalCondition({ userId, collectionName, customActionName, }: {
|
|
43
|
+
userId: number;
|
|
44
|
+
customActionName: string;
|
|
45
|
+
collectionName: string;
|
|
46
|
+
}): Promise<import("./types").RawTreeWithSources>;
|
|
47
|
+
getConditionalApproveCondition({ userId, collectionName, customActionName, }: {
|
|
48
|
+
userId: number;
|
|
49
|
+
customActionName: string;
|
|
50
|
+
collectionName: string;
|
|
51
|
+
}): Promise<import("./types").RawTreeWithSources>;
|
|
52
|
+
getConditionalApproveConditions({ collectionName, customActionName, }: {
|
|
53
|
+
customActionName: string;
|
|
54
|
+
collectionName: string;
|
|
55
|
+
}): Promise<Map<number, import("./types").RawTreeWithSources>>;
|
|
56
|
+
getRoleIdsAllowedToApproveWithoutConditions({ collectionName, customActionName, }: {
|
|
57
|
+
customActionName: string;
|
|
58
|
+
collectionName: string;
|
|
59
|
+
}): Promise<number[]>;
|
|
32
60
|
canRequestCustomActionParameters({ userId, collectionName, customActionName, }: {
|
|
33
61
|
userId: number;
|
|
34
62
|
collectionName: string;
|
|
@@ -18,6 +18,10 @@ class PermissionServiceWithCache {
|
|
|
18
18
|
const roleId = await this.getRoleIdForUserId(userId);
|
|
19
19
|
return this.actionPermissionService.can(roleId, (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Trigger, customActionName, collectionName));
|
|
20
20
|
}
|
|
21
|
+
async doesTriggerCustomActionRequiresApproval({ userId, collectionName, customActionName, }) {
|
|
22
|
+
const roleId = await this.getRoleIdForUserId(userId);
|
|
23
|
+
return this.actionPermissionService.can(roleId, (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.RequireApproval, customActionName, collectionName));
|
|
24
|
+
}
|
|
21
25
|
async canApproveCustomAction({ userId, collectionName, customActionName, requesterId, }) {
|
|
22
26
|
const actionIdentifier = requesterId === userId
|
|
23
27
|
? (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.SelfApprove, customActionName, collectionName)
|
|
@@ -25,6 +29,24 @@ class PermissionServiceWithCache {
|
|
|
25
29
|
const roleId = await this.getRoleIdForUserId(userId);
|
|
26
30
|
return this.actionPermissionService.can(roleId, actionIdentifier);
|
|
27
31
|
}
|
|
32
|
+
async getConditionalTriggerCondition({ userId, collectionName, customActionName, }) {
|
|
33
|
+
const roleId = await this.getRoleIdForUserId(userId);
|
|
34
|
+
return this.actionPermissionService.getCustomActionCondition(roleId, (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Trigger, customActionName, collectionName));
|
|
35
|
+
}
|
|
36
|
+
async getConditionalRequiresApprovalCondition({ userId, collectionName, customActionName, }) {
|
|
37
|
+
const roleId = await this.getRoleIdForUserId(userId);
|
|
38
|
+
return this.actionPermissionService.getCustomActionCondition(roleId, (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.RequireApproval, customActionName, collectionName));
|
|
39
|
+
}
|
|
40
|
+
async getConditionalApproveCondition({ userId, collectionName, customActionName, }) {
|
|
41
|
+
const roleId = await this.getRoleIdForUserId(userId);
|
|
42
|
+
return this.actionPermissionService.getCustomActionCondition(roleId, (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Approve, customActionName, collectionName));
|
|
43
|
+
}
|
|
44
|
+
async getConditionalApproveConditions({ collectionName, customActionName, }) {
|
|
45
|
+
return this.actionPermissionService.getAllCustomActionConditions((0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Approve, customActionName, collectionName));
|
|
46
|
+
}
|
|
47
|
+
async getRoleIdsAllowedToApproveWithoutConditions({ collectionName, customActionName, }) {
|
|
48
|
+
return this.actionPermissionService.getRoleIdsAllowedToApproveWithoutConditions((0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Approve, customActionName, collectionName));
|
|
49
|
+
}
|
|
28
50
|
async canRequestCustomActionParameters({ userId, collectionName, customActionName, }) {
|
|
29
51
|
const roleId = await this.getRoleIdForUserId(userId);
|
|
30
52
|
return this.actionPermissionService.canOneOf(roleId, [
|
|
@@ -44,4 +66,4 @@ class PermissionServiceWithCache {
|
|
|
44
66
|
}
|
|
45
67
|
}
|
|
46
68
|
exports.default = PermissionServiceWithCache;
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi13aXRoLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Blcm1pc3Npb25zL3Blcm1pc3Npb24td2l0aC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLDZFQUdzQztBQUV0QyxtQ0FBbUU7QUFFbkUsTUFBcUIsMEJBQTBCO0lBQzdDLFlBQ21CLHVCQUF5QyxFQUN6QywwQkFBc0Q7UUFEdEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFrQjtRQUN6QywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO0lBQ3RFLENBQUM7SUFFRyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQzNCLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxHQUtOO1FBQ0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUNyQyxNQUFNLEVBQ04sSUFBQSwrREFBa0MsRUFBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQzFELENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLHNCQUFzQixDQUFDLE1BS25DO1FBQ0MsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUNsQyxNQUFNLEVBQ04sY0FBYyxFQUNkLGdCQUFnQixHQUtqQjtRQUNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FDckMsTUFBTSxFQUNOLElBQUEsMkRBQThCLEVBQUMseUJBQWlCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUM1RixDQUFDO0lBQ0osQ0FB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
|
|
@@ -9,11 +9,24 @@ declare type GenericRawTree<RawLeaf, RawBranch> = RawBranch | RawLeaf;
|
|
|
9
9
|
export declare type RawTreeBranch = KeysToSnakeCase<PlainConditionTreeBranch>;
|
|
10
10
|
export declare type RawTreeLeaf = KeysToSnakeCase<PlainConditionTreeLeaf>;
|
|
11
11
|
export declare type RawTree = GenericRawTree<RawTreeLeaf, RawTreeBranch>;
|
|
12
|
+
export declare type CustomActionRawTreeLeafSource = 'data' | 'input';
|
|
13
|
+
export declare type RawTreeLeafWithSources = RawTreeLeaf & {
|
|
14
|
+
source: CustomActionRawTreeLeafSource;
|
|
15
|
+
};
|
|
16
|
+
export declare type RawTreeBranchWithSources = {
|
|
17
|
+
aggregator: RawTreeBranch['aggregator'];
|
|
18
|
+
conditions: Array<RawTreeBranchWithSources | RawTreeLeafWithSources>;
|
|
19
|
+
};
|
|
20
|
+
export declare type RawTreeWithSources = GenericRawTree<RawTreeLeafWithSources, RawTreeBranchWithSources>;
|
|
12
21
|
export declare type EnvironmentPermissionsV4 = EnvironmentPermissionsV4Remote | true;
|
|
13
22
|
export declare type RightDescriptionWithRolesV4 = {
|
|
14
23
|
roles: number[];
|
|
15
24
|
};
|
|
16
25
|
export declare type RightDescriptionV4 = boolean | RightDescriptionWithRolesV4;
|
|
26
|
+
export declare type RightConditionByRolesV4 = {
|
|
27
|
+
roleId: number;
|
|
28
|
+
filter: RawTreeWithSources;
|
|
29
|
+
};
|
|
17
30
|
export interface EnvironmentCollectionAccessPermissionsV4 {
|
|
18
31
|
browseEnabled: RightDescriptionV4;
|
|
19
32
|
readEnabled: RightDescriptionV4;
|
|
@@ -24,8 +37,11 @@ export interface EnvironmentCollectionAccessPermissionsV4 {
|
|
|
24
37
|
}
|
|
25
38
|
export interface EnvironmentSmartActionPermissionsV4 {
|
|
26
39
|
triggerEnabled: RightDescriptionV4;
|
|
40
|
+
triggerConditions: RightConditionByRolesV4[];
|
|
27
41
|
approvalRequired: RightDescriptionV4;
|
|
42
|
+
approvalRequiredConditions: RightConditionByRolesV4[];
|
|
28
43
|
userApprovalEnabled: RightDescriptionV4;
|
|
44
|
+
userApprovalConditions: RightConditionByRolesV4[];
|
|
29
45
|
selfApprovalEnabled: RightDescriptionV4;
|
|
30
46
|
}
|
|
31
47
|
export interface EnvironmentCollectionActionPermissionsV4 {
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVybWlzc2lvbnMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0ZBLElBQVksZUFLWDtBQUxELFdBQVksZUFBZTtJQUN6QixrQ0FBZSxDQUFBO0lBQ2YsMENBQXVCLENBQUE7SUFDdkIsb0NBQWlCLENBQUE7SUFDakIsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFMVyxlQUFlLEdBQWYsdUJBQWUsS0FBZix1QkFBZSxRQUsxQjtBQWFELElBQVkscUJBT1g7QUFQRCxXQUFZLHFCQUFxQjtJQUMvQiwwQ0FBaUIsQ0FBQTtJQUNqQiwwQ0FBaUIsQ0FBQTtJQUNqQixzQ0FBYSxDQUFBO0lBQ2Isc0NBQWEsQ0FBQTtJQUNiLDBDQUFpQixDQUFBO0lBQ2pCLG9DQUFXLENBQUE7QUFDYixDQUFDLEVBUFcscUJBQXFCLEdBQXJCLDZCQUFxQixLQUFyQiw2QkFBcUIsUUFPaEM7QUFFRCxJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDM0Isd0NBQW1CLENBQUE7SUFDbkIsd0NBQW1CLENBQUE7SUFDbkIsaURBQTRCLENBQUE7SUFDNUIseURBQW9DLENBQUE7QUFDdEMsQ0FBQyxFQUxXLGlCQUFpQixHQUFqQix5QkFBaUIsS0FBakIseUJBQWlCLFFBSzVCIn0=
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ChartRequest } from './charts/chart-handler';
|
|
2
2
|
import type { Chart, QueryChart } from './charts/types';
|
|
3
|
-
import type { CollectionActionEvent, RawTree } from './permissions/types';
|
|
3
|
+
import type { CollectionActionEvent, RawTree, RawTreeWithSources } from './permissions/types';
|
|
4
4
|
import type { Client } from 'openid-client';
|
|
5
5
|
import { UserInfo } from './auth/types';
|
|
6
6
|
import { IpWhitelistConfiguration } from './ip-whitelist/types';
|
|
@@ -42,6 +42,11 @@ export interface PermissionService {
|
|
|
42
42
|
customActionName: string;
|
|
43
43
|
collectionName: string;
|
|
44
44
|
}): Promise<boolean>;
|
|
45
|
+
doesTriggerCustomActionRequiresApproval(params: {
|
|
46
|
+
userId: number | string;
|
|
47
|
+
customActionName: string;
|
|
48
|
+
collectionName: string;
|
|
49
|
+
}): Promise<boolean>;
|
|
45
50
|
canApproveCustomAction(params: {
|
|
46
51
|
userId: number | string;
|
|
47
52
|
customActionName: string;
|
|
@@ -64,6 +69,29 @@ export interface PermissionService {
|
|
|
64
69
|
renderingId: number | string;
|
|
65
70
|
segmentQuery: string;
|
|
66
71
|
}): Promise<boolean>;
|
|
72
|
+
getConditionalTriggerCondition(params: {
|
|
73
|
+
userId: number | string;
|
|
74
|
+
customActionName: string;
|
|
75
|
+
collectionName: string;
|
|
76
|
+
}): Promise<RawTreeWithSources | undefined>;
|
|
77
|
+
getConditionalRequiresApprovalCondition(params: {
|
|
78
|
+
userId: number | string;
|
|
79
|
+
customActionName: string;
|
|
80
|
+
collectionName: string;
|
|
81
|
+
}): Promise<RawTreeWithSources | undefined>;
|
|
82
|
+
getConditionalApproveCondition(params: {
|
|
83
|
+
userId: number | string;
|
|
84
|
+
customActionName: string;
|
|
85
|
+
collectionName: string;
|
|
86
|
+
}): Promise<RawTreeWithSources | undefined>;
|
|
87
|
+
getConditionalApproveConditions(params: {
|
|
88
|
+
customActionName: string;
|
|
89
|
+
collectionName: string;
|
|
90
|
+
}): Promise<Map<number, RawTreeWithSources> | undefined>;
|
|
91
|
+
getRoleIdsAllowedToApproveWithoutConditions(params: {
|
|
92
|
+
customActionName: string;
|
|
93
|
+
collectionName: string;
|
|
94
|
+
}): Promise<Array<number>>;
|
|
67
95
|
}
|
|
68
96
|
export interface ChartHandlerInterface {
|
|
69
97
|
getChartWithContextInjected(params: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/forestadmin-client",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"test": "jest"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@forestadmin/datasource-toolkit": "1.
|
|
34
|
+
"@forestadmin/datasource-toolkit": "1.2.0",
|
|
35
35
|
"@types/json-api-serializer": "2.6.3",
|
|
36
36
|
"@types/jsonwebtoken": "^8.5.8",
|
|
37
37
|
"@types/lru-cache": "^7.6.1",
|