n8n
Version:
n8n Workflow Automation Tool
44 lines • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDataTableListFilter = getDataTableListFilter;
exports.resolveProjectIdForCreate = resolveProjectIdForCreate;
const db_1 = require("@n8n/db");
const di_1 = require("@n8n/di");
const bad_request_error_1 = require("../../../../errors/response-errors/bad-request.error");
const forbidden_error_1 = require("../../../../errors/response-errors/forbidden.error");
const project_service_ee_1 = require("../../../../services/project.service.ee");
async function getDataTableListFilter(userId, isGlobalOwnerOrAdmin, requestedProjectId, restFilter) {
if (requestedProjectId) {
return { ...restFilter, projectId: requestedProjectId };
}
if (isGlobalOwnerOrAdmin) {
return restFilter;
}
const personalProject = await di_1.Container.get(db_1.ProjectRepository).getPersonalProjectForUserOrFail(userId);
const projectRelations = await di_1.Container.get(db_1.ProjectRelationRepository).find({
where: { userId },
relations: ['project'],
});
const teamProjectIds = projectRelations
.filter((rel) => rel.project.type === 'team')
.map((rel) => rel.projectId);
return {
...restFilter,
projectId: [personalProject.id, ...teamProjectIds],
};
}
async function resolveProjectIdForCreate(user, requestedProjectId) {
if (!requestedProjectId) {
const project = await di_1.Container.get(db_1.ProjectRepository).getPersonalProjectForUserOrFail(user.id);
return project.id;
}
const exists = await di_1.Container.get(db_1.ProjectRepository).findOneBy({ id: requestedProjectId });
if (!exists) {
throw new bad_request_error_1.BadRequestError(`Project with ID "${requestedProjectId}" not found`);
}
const project = await di_1.Container.get(project_service_ee_1.ProjectService).getProjectWithScope(user, requestedProjectId, ['dataTable:create']);
if (!project)
throw new forbidden_error_1.ForbiddenError();
return project.id;
}
//# sourceMappingURL=data-tables.service.js.map