LdapSettingsRequest request;
try {
request = objectMapper.readValue(body, LdapSettingsRequest.class);
} catch (IOException e) {
LOG.error("Error while parsing JSON", e);
throw new WebApplicationException(e, Response.Status.BAD_REQUEST);
}
// load the existing config, or create a new one. we only support having one, currently
LdapSettings ldapSettings = ldapSettingsService.load();
if (ldapSettings == null) {
ldapSettings = ldapSettingsFactory.createEmpty();
}
ldapSettings.setSystemUsername(request.systemUsername);
ldapSettings.setSystemPassword(request.systemPassword);
ldapSettings.setUri(request.ldapUri);
ldapSettings.setUseStartTls(request.useStartTls);
ldapSettings.setTrustAllCertificates(request.trustAllCertificates);
ldapSettings.setActiveDirectory(request.activeDirectory);
ldapSettings.setSearchPattern(request.searchPattern);
ldapSettings.setSearchBase(request.searchBase);
ldapSettings.setEnabled(request.enabled);
ldapSettings.setDisplayNameAttribute(request.displayNameAttribute);
ldapSettings.setDefaultGroup(request.defaultGroup);
try {
ldapSettingsService.save(ldapSettings);
} catch (ValidationException e) {
LOG.error("Invalid LDAP settings, not updated!", e);
throw new WebApplicationException(e, Response.Status.BAD_REQUEST);
}
ldapAuthenticator.applySettings(ldapSettings);
}