@forestadmin/forestadmin-client
Version:
This package contains the logic to use the ForestAdmin API inside an agent.
71 lines • 9.51 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const generate_action_identifier_1 = require("./generate-action-identifier");
const types_1 = require("./types");
class PermissionServiceWithCache {
constructor(actionPermissionService, renderingPermissionService) {
this.actionPermissionService = actionPermissionService;
this.renderingPermissionService = renderingPermissionService;
}
async canOnCollection({ userId, collectionName, event, }) {
const roleId = await this.getRoleIdForUserId(userId);
return this.actionPermissionService.can(roleId, (0, generate_action_identifier_1.generateCollectionActionIdentifier)(event, collectionName));
}
async canExecuteSegmentQuery(params) {
return this.renderingPermissionService.canExecuteSegmentQuery(params);
}
async canTriggerCustomAction({ userId, collectionName, customActionName, }) {
const roleId = await this.getRoleIdForUserId(userId);
return this.actionPermissionService.can(roleId, (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Trigger, customActionName, collectionName));
}
async doesTriggerCustomActionRequiresApproval({ userId, collectionName, customActionName, }) {
// In development everything is allowed (even RequireApproval)
// but we don't want to require approvals!
if (await this.actionPermissionService.isDevelopmentPermission()) {
return false;
}
const roleId = await this.getRoleIdForUserId(userId);
return this.actionPermissionService.can(roleId, (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.RequireApproval, customActionName, collectionName));
}
async canApproveCustomAction({ userId, collectionName, customActionName, requesterId, }) {
const actionIdentifier = requesterId === userId
? (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.SelfApprove, customActionName, collectionName)
: (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Approve, customActionName, collectionName);
const roleId = await this.getRoleIdForUserId(userId);
return this.actionPermissionService.can(roleId, actionIdentifier);
}
async getConditionalTriggerCondition({ userId, collectionName, customActionName, }) {
const roleId = await this.getRoleIdForUserId(userId);
return this.actionPermissionService.getCustomActionCondition(roleId, (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Trigger, customActionName, collectionName));
}
async getConditionalRequiresApprovalCondition({ userId, collectionName, customActionName, }) {
const roleId = await this.getRoleIdForUserId(userId);
return this.actionPermissionService.getCustomActionCondition(roleId, (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.RequireApproval, customActionName, collectionName));
}
async getConditionalApproveCondition({ userId, collectionName, customActionName, }) {
const roleId = await this.getRoleIdForUserId(userId);
return this.actionPermissionService.getCustomActionCondition(roleId, (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Approve, customActionName, collectionName));
}
async getConditionalApproveConditions({ collectionName, customActionName, }) {
return this.actionPermissionService.getAllCustomActionConditions((0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Approve, customActionName, collectionName));
}
async getRoleIdsAllowedToApproveWithoutConditions({ collectionName, customActionName, }) {
return this.actionPermissionService.getRoleIdsAllowedToApproveWithoutConditions((0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Approve, customActionName, collectionName));
}
async canRequestCustomActionParameters({ userId, collectionName, customActionName, }) {
const roleId = await this.getRoleIdForUserId(userId);
return this.actionPermissionService.can(roleId, (0, generate_action_identifier_1.generateCustomActionIdentifier)(types_1.CustomActionEvent.Trigger, customActionName, collectionName));
}
async canExecuteChart({ renderingId, userId, chartRequest, }) {
return this.renderingPermissionService.canExecuteChart({
renderingId,
userId,
chartRequest,
});
}
async getRoleIdForUserId(userId) {
return (await this.renderingPermissionService.getUser(userId))?.roleId;
}
}
exports.default = PermissionServiceWithCache;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi13aXRoLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Blcm1pc3Npb25zL3Blcm1pc3Npb24td2l0aC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDZFQUdzQztBQUV0QyxtQ0FBbUU7QUFJbkUsTUFBcUIsMEJBQTBCO0lBQzdDLFlBQ21CLHVCQUF5QyxFQUN6QywwQkFBc0Q7UUFEdEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFrQjtRQUN6QywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO0lBQ3RFLENBQUM7SUFFRyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQzNCLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxHQUtOO1FBQ0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUNyQyxNQUFNLEVBQ04sSUFBQSwrREFBa0MsRUFBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQzFELENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLHNCQUFzQixDQUFDLE1BTW5DO1FBQ0MsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUNsQyxNQUFNLEVBQ04sY0FBYyxFQUNkLGdCQUFnQixHQUtqQjtRQUNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FDckMsTUFBTSxFQUNOLElBQUEsMkRBQThCLEVBQUMseUJBQWlCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUM1RixDQUFDO0lBQ0osQ0FB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
;