UNPKG

n8n

Version:

n8n Workflow Automation Tool

52 lines 3.25 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WorkflowReviewDecisionEligibilityService = void 0; const db_1 = require("@n8n/db"); const di_1 = require("@n8n/di"); const permissions_1 = require("@n8n/permissions"); const workflow_finder_service_1 = require("../../workflows/workflow-finder.service"); let WorkflowReviewDecisionEligibilityService = class WorkflowReviewDecisionEligibilityService { constructor(workflowFinderService, workflowReviewRequestAuthorRepository, projectRelationRepository) { this.workflowFinderService = workflowFinderService; this.workflowReviewRequestAuthorRepository = workflowReviewRequestAuthorRepository; this.projectRelationRepository = projectRelationRepository; } async hasAdminOverride(user, projectId) { if (user.role.slug === permissions_1.GLOBAL_ADMIN_ROLE_SLUG || user.role.slug === permissions_1.GLOBAL_OWNER_ROLE_SLUG) { return true; } const adminProjectIds = await this.projectRelationRepository.getAccessibleProjectsByRoles(user.id, [permissions_1.PROJECT_ADMIN_ROLE_SLUG]); return adminProjectIds.includes(projectId); } async resolveViewerEligibility(user, request, pinnedWorkflowId) { if (!pinnedWorkflowId) { return { canDecide: false, reason: 'missing_publish_permission' }; } const workflow = await this.workflowFinderService.findWorkflowForUser(pinnedWorkflowId, user, [ 'workflow:publish', ]); if (!workflow) { return { canDecide: false, reason: 'missing_publish_permission' }; } const isAuthor = await this.workflowReviewRequestAuthorRepository.isAuthor({ workflowReviewRequestId: request.id, userId: user.id }, {}); if (isAuthor && !(await this.hasAdminOverride(user, request.projectId))) { return { canDecide: false, reason: 'author' }; } return { canDecide: true, reason: null }; } }; exports.WorkflowReviewDecisionEligibilityService = WorkflowReviewDecisionEligibilityService; exports.WorkflowReviewDecisionEligibilityService = WorkflowReviewDecisionEligibilityService = __decorate([ (0, di_1.Service)(), __metadata("design:paramtypes", [workflow_finder_service_1.WorkflowFinderService, db_1.WorkflowReviewRequestAuthorRepository, db_1.ProjectRelationRepository]) ], WorkflowReviewDecisionEligibilityService); //# sourceMappingURL=workflow-review-decision-eligibility.service.js.map