n8n
Version:
n8n Workflow Automation Tool
38 lines • 2.1 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 oidc_service_ee_1 = require("../../../../modules/sso-oidc/oidc.service.ee");
const sso_oidc_mapper_1 = require("./sso-oidc.mapper");
const global_middleware_1 = require("../../shared/middlewares/global.middleware");
const ssoOidcHandlers = {
getOidcConfiguration: [
(0, global_middleware_1.isLicensed)('feat:oidc'),
(0, global_middleware_1.apiKeyHasScopeWithGlobalScopeFallback)({ scope: 'oidc:manage' }),
async (_req, res) => {
const config = await di_1.Container.get(oidc_service_ee_1.OidcService).loadConfig();
return res.json((0, sso_oidc_mapper_1.toOidcConfigurationResponse)(config));
},
],
setOidcConfiguration: [
(0, global_middleware_1.isLicensed)('feat:oidc'),
(0, global_middleware_1.apiKeyHasScopeWithGlobalScopeFallback)({ scope: 'oidc:manage' }),
async (req, res) => {
const payload = api_types_1.UpdateOidcConfigurationDto.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 oidcService = di_1.Container.get(oidc_service_ee_1.OidcService);
await oidcService.updateConfig(payload.data);
return res.json((0, sso_oidc_mapper_1.toOidcConfigurationResponse)(await oidcService.loadConfig()));
},
],
};
module.exports = ssoOidcHandlers;
//# sourceMappingURL=sso-oidc.handler.js.map