n8n
Version:
n8n Workflow Automation Tool
38 lines • 2.16 kB
JavaScript
;
const api_types_1 = require("@n8n/api-types");
const config_1 = require("@n8n/config");
const di_1 = require("@n8n/di");
const bad_request_error_1 = require("../../../../errors/response-errors/bad-request.error");
const conflict_error_1 = require("../../../../errors/response-errors/conflict.error");
const saml_service_ee_1 = require("../../../../modules/sso-saml/saml.service.ee");
const sso_saml_mapper_1 = require("./sso-saml.mapper");
const global_middleware_1 = require("../../shared/middlewares/global.middleware");
const ssoSamlHandlers = {
getSamlConfiguration: [
(0, global_middleware_1.isLicensed)('feat:saml'),
(0, global_middleware_1.apiKeyHasScopeWithGlobalScopeFallback)({ scope: 'saml:manage' }),
async (_req, res) => {
const samlService = di_1.Container.get(saml_service_ee_1.SamlService);
return res.json((0, sso_saml_mapper_1.toSamlConfigurationResponse)(samlService.samlPreferences));
},
],
updateSamlConfiguration: [
(0, global_middleware_1.isLicensed)('feat:saml'),
(0, global_middleware_1.apiKeyHasScopeWithGlobalScopeFallback)({ scope: 'saml:manage' }),
async (req, res) => {
const payload = api_types_1.UpdateSamlConfigurationDto.safeParse(req.body);
if (!payload.success) {
throw new bad_request_error_1.BadRequestError(payload.error.errors[0]?.message ?? 'Invalid request body');
}
const { ssoManagedByEnv } = di_1.Container.get(config_1.InstanceSettingsLoaderConfig);
if (ssoManagedByEnv) {
throw new conflict_error_1.ConflictError('SSO configuration is managed declaratively and cannot be modified through the API');
}
const samlService = di_1.Container.get(saml_service_ee_1.SamlService);
await samlService.setSamlPreferences((0, sso_saml_mapper_1.toSamlPreferencesUpdate)(payload.data));
return res.json((0, sso_saml_mapper_1.toSamlConfigurationResponse)(samlService.samlPreferences));
},
],
};
module.exports = ssoSamlHandlers;
//# sourceMappingURL=sso-saml.handler.js.map