mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-16 09:36:44 +00:00
31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
import { Service } from 'typedi';
|
|
import { In, type FindOptionsWhere } from 'typeorm';
|
|
|
|
import type { SharedWorkflow, WorkflowSharingRole } from '@db/entities/SharedWorkflow';
|
|
import type { User } from '@db/entities/User';
|
|
import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository';
|
|
|
|
@Service()
|
|
export class WorkflowSharingService {
|
|
constructor(private readonly sharedWorkflowRepository: SharedWorkflowRepository) {}
|
|
|
|
/**
|
|
* Get the IDs of the workflows that have been shared with the user.
|
|
* Returns all IDs if user has the 'workflow:read' scope.
|
|
*/
|
|
async getSharedWorkflowIds(user: User, roles?: WorkflowSharingRole[]): Promise<string[]> {
|
|
const where: FindOptionsWhere<SharedWorkflow> = {};
|
|
if (!user.hasGlobalScope('workflow:read')) {
|
|
where.userId = user.id;
|
|
}
|
|
if (roles?.length) {
|
|
where.role = In(roles);
|
|
}
|
|
const sharedWorkflows = await this.sharedWorkflowRepository.find({
|
|
where,
|
|
select: ['workflowId'],
|
|
});
|
|
return sharedWorkflows.map(({ workflowId }) => workflowId);
|
|
}
|
|
}
|