n8n
Version:
n8n Workflow Automation Tool
76 lines • 3.98 kB
JavaScript
"use strict";
const api_types_1 = require("@n8n/api-types");
const di_1 = require("@n8n/di");
const response_error_1 = require("../../../../errors/response-errors/abstract/response.error");
const bad_request_error_1 = require("../../../../errors/response-errors/bad-request.error");
const helpers_ee_1 = require("../../../../modules/ldap.ee/helpers.ee");
const ldap_errors_1 = require("../../../../modules/ldap.ee/ldap.errors");
const ldap_service_ee_1 = require("../../../../modules/ldap.ee/ldap.service.ee");
const ldap_mapper_1 = require("./ldap.mapper");
const global_middleware_1 = require("../../shared/middlewares/global.middleware");
const pagination_service_1 = require("../../shared/services/pagination.service");
const ldapHandlers = {
getLdapConfiguration: [
(0, global_middleware_1.isLicensed)('feat:ldap'),
(0, global_middleware_1.apiKeyHasScopeWithGlobalScopeFallback)({ scope: 'ldap:manage' }),
async (_req, res) => {
const ldapService = di_1.Container.get(ldap_service_ee_1.LdapService);
const config = await ldapService.loadConfig();
return res.json((0, ldap_mapper_1.toLdapConfigurationResponse)(config));
},
],
updateLdapConfiguration: [
(0, global_middleware_1.isLicensed)('feat:ldap'),
(0, global_middleware_1.apiKeyHasScopeWithGlobalScopeFallback)({ scope: 'ldap:manage' }),
async (req, res) => {
const payload = api_types_1.UpdateLdapConfigurationDto.safeParse(req.body);
if (!payload.success) {
throw new bad_request_error_1.BadRequestError(payload.error.errors[0]?.message ?? 'Invalid request body');
}
const ldapService = di_1.Container.get(ldap_service_ee_1.LdapService);
const current = await ldapService.loadConfig();
const updated = (0, ldap_mapper_1.toLdapConfigUpdate)(payload.data, current);
await ldapService.updateConfig(updated);
const reloaded = await ldapService.loadConfig();
return res.json((0, ldap_mapper_1.toLdapConfigurationResponse)(reloaded));
},
],
getLdapSync: [
(0, global_middleware_1.isLicensed)('feat:ldap'),
(0, global_middleware_1.apiKeyHasScopeWithGlobalScopeFallback)({ scope: 'ldap:sync' }),
global_middleware_1.validCursor,
async (req, res) => {
const { offset = 0, limit = 100 } = req.query;
const [rows, count] = await (0, helpers_ee_1.getLdapSynchronizationsWithCount)(offset, limit);
return res.json({
data: rows.map(ldap_mapper_1.toLdapSyncHistoryResponse),
nextCursor: (0, pagination_service_1.encodeNextCursor)({ offset, limit, numberOfTotalRecords: count }),
});
},
],
runLdapSync: [
(0, global_middleware_1.isLicensed)('feat:ldap'),
(0, global_middleware_1.apiKeyHasScopeWithGlobalScopeFallback)({ scope: 'ldap:sync' }),
async (req, res) => {
const payload = api_types_1.LdapSyncDto.safeParse(req.body);
if (!payload.success) {
throw new bad_request_error_1.BadRequestError(payload.error.errors[0]?.message ?? 'Invalid request body');
}
let syncHistory;
try {
syncHistory = await di_1.Container.get(ldap_service_ee_1.LdapService).runSync(payload.data.type);
}
catch (e) {
if (e instanceof response_error_1.ResponseError)
throw e;
if (e instanceof ldap_errors_1.LdapRejectionError || e instanceof ldap_errors_1.LdapConnectionError) {
throw new bad_request_error_1.BadRequestError(e.message);
}
throw e;
}
return res.json((0, ldap_mapper_1.toLdapSyncHistoryResponse)(syncHistory));
},
],
};
module.exports = ldapHandlers;
//# sourceMappingURL=ldap.handler.js.map