n8n/packages/cli/src/executions/execution.service.ee.ts
Csaba Tuncsik 596c472ecc
feat: RBAC (#8922)
Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>
Co-authored-by: Val <68596159+valya@users.noreply.github.com>
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
Co-authored-by: Valya Bullions <valya@n8n.io>
Co-authored-by: Danny Martini <danny@n8n.io>
Co-authored-by: Danny Martini <despair.blue@gmail.com>
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
Co-authored-by: oleg <me@olegivaniv.com>
Co-authored-by: Michael Kret <michael.k@radency.com>
Co-authored-by: Michael Kret <88898367+michael-radency@users.noreply.github.com>
Co-authored-by: Elias Meire <elias@meire.dev>
Co-authored-by: Giulio Andreini <andreini@netseven.it>
Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
Co-authored-by: Ayato Hayashi <go12limchangyong@gmail.com>
2024-05-17 10:53:15 +02:00

48 lines
1.7 KiB
TypeScript

import { ExecutionService } from './execution.service';
import type { ExecutionRequest } from './execution.types';
import type { IExecutionResponse, IExecutionFlattedResponse } from '@/Interfaces';
import { EnterpriseWorkflowService } from '../workflows/workflow.service.ee';
import type { WorkflowWithSharingsAndCredentials } from '@/workflows/workflows.types';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { Service } from 'typedi';
@Service()
export class EnterpriseExecutionsService {
constructor(
private readonly executionService: ExecutionService,
private readonly workflowRepository: WorkflowRepository,
private readonly enterpriseWorkflowService: EnterpriseWorkflowService,
) {}
async findOne(
req: ExecutionRequest.GetOne,
sharedWorkflowIds: string[],
): Promise<IExecutionResponse | IExecutionFlattedResponse | undefined> {
const execution = await this.executionService.findOne(req, sharedWorkflowIds);
if (!execution) return;
const workflow = (await this.workflowRepository.get({
id: execution.workflowId,
})) as WorkflowWithSharingsAndCredentials;
if (!workflow) return;
const workflowWithSharingsMetaData =
this.enterpriseWorkflowService.addOwnerAndSharings(workflow);
await this.enterpriseWorkflowService.addCredentialsToWorkflow(
workflowWithSharingsMetaData,
req.user,
);
execution.workflowData = {
...execution.workflowData,
homeProject: workflowWithSharingsMetaData.homeProject,
sharedWithProjects: workflowWithSharingsMetaData.sharedWithProjects,
usedCredentials: workflowWithSharingsMetaData.usedCredentials,
} as WorkflowWithSharingsAndCredentials;
return execution;
}
}