mirror of
https://github.com/n8n-io/n8n.git
synced 2024-09-28 02:37:40 -07:00
33 lines
969 B
TypeScript
33 lines
969 B
TypeScript
|
import { FindOneOptions, ObjectLiteral } from 'typeorm';
|
||
|
import { Db } from '..';
|
||
|
import { SharedWorkflow } from '../databases/entities/SharedWorkflow';
|
||
|
import { User } from '../databases/entities/User';
|
||
|
|
||
|
export class WorkflowsService {
|
||
|
static async getSharing(
|
||
|
user: User,
|
||
|
workflowId: number | string,
|
||
|
relations: string[] = ['workflow'],
|
||
|
{ allowGlobalOwner } = { allowGlobalOwner: true },
|
||
|
): Promise<SharedWorkflow | undefined> {
|
||
|
const options: FindOneOptions<SharedWorkflow> & { where: ObjectLiteral } = {
|
||
|
where: {
|
||
|
workflow: { id: workflowId },
|
||
|
},
|
||
|
};
|
||
|
|
||
|
// Omit user from where if the requesting user is the global
|
||
|
// owner. This allows the global owner to view and delete
|
||
|
// workflows they don't own.
|
||
|
if (!allowGlobalOwner || user.globalRole.name !== 'owner') {
|
||
|
options.where.user = { id: user.id };
|
||
|
}
|
||
|
|
||
|
if (relations?.length) {
|
||
|
options.relations = relations;
|
||
|
}
|
||
|
|
||
|
return Db.collections.SharedWorkflow.findOne(options);
|
||
|
}
|
||
|
}
|