From 075983fd692962f8e84964bcaf9d10844e3d0fe2 Mon Sep 17 00:00:00 2001 From: Mike McKay <mfmckay@wustl.edu> Date: Fri, 27 May 2016 23:43:20 -0500 Subject: [PATCH] Got Secure Channel AdminUI setting to take effect. --- .../xnat/configuration/SchedulerConfig.java | 1 + .../methods/RequiredChannelHandlerMethod.java | 54 +++++++++++++++++++ .../xnat/spawner/site-admin-elements.yaml | 1 + 3 files changed, 56 insertions(+) create mode 100644 src/main/java/org/nrg/xnat/event/listeners/methods/RequiredChannelHandlerMethod.java diff --git a/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java b/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java index 3c7cd76e..72b7991a 100644 --- a/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java +++ b/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java @@ -97,6 +97,7 @@ public class SchedulerConfig implements SchedulingConfigurer { _eventService.triggerEvent(new PreferenceEvent("emailPrefix", String.valueOf(XDAT.getNotificationsPreferences().getEmailPrefix()))); _eventService.triggerEvent(new PreferenceEvent("host", String.valueOf(XDAT.getNotificationsPreferences().getHostname()))); _eventService.triggerEvent(new PreferenceEvent("requireLogin", String.valueOf(XDAT.getSiteConfigPreferences().getRequireLogin()))); + _eventService.triggerEvent(new PreferenceEvent("security.channel", String.valueOf(XDAT.getSiteConfigPreferences().getSecurityChannel()))); for (final TriggerTask triggerTask : _triggerTasks) { taskRegistrar.addTriggerTask(triggerTask); } diff --git a/src/main/java/org/nrg/xnat/event/listeners/methods/RequiredChannelHandlerMethod.java b/src/main/java/org/nrg/xnat/event/listeners/methods/RequiredChannelHandlerMethod.java new file mode 100644 index 00000000..9c9b8210 --- /dev/null +++ b/src/main/java/org/nrg/xnat/event/listeners/methods/RequiredChannelHandlerMethod.java @@ -0,0 +1,54 @@ +package org.nrg.xnat.event.listeners.methods; + +import com.google.common.collect.ImmutableList; +import org.nrg.xdat.XDAT; +import org.nrg.xnat.security.TranslatingChannelProcessingFilter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Lazy; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +@Component +public class RequiredChannelHandlerMethod extends AbstractSiteConfigPreferenceHandlerMethod { + @Override + public List<String> getHandledPreferences() { + return PREFERENCES; + } + + @Override + public void handlePreferences(final Map<String, String> values) { + if (!Collections.disjoint(PREFERENCES, values.keySet())) { + updateRequiredChannel(); + } + } + + @Override + public void handlePreference(final String preference, final String value) { + if(PREFERENCES.contains(preference)){ + updateRequiredChannel(); + } + } + + private void updateRequiredChannel(){ + _filter.setRequiredChannel(XDAT.getSiteConfigPreferences().getSecurityChannel()); + } + + private static final Logger _log = LoggerFactory.getLogger(RequiredChannelHandlerMethod.class); + private static final List<String> PREFERENCES = ImmutableList.copyOf(Arrays.asList("security.channel")); + + @Autowired + @Lazy + private JdbcTemplate _template; + + @Autowired + @Qualifier("channelProcessingFilter") + private TranslatingChannelProcessingFilter _filter; +} diff --git a/src/main/resources/META-INF/xnat/spawner/site-admin-elements.yaml b/src/main/resources/META-INF/xnat/spawner/site-admin-elements.yaml index c537974f..a861a15b 100644 --- a/src/main/resources/META-INF/xnat/spawner/site-admin-elements.yaml +++ b/src/main/resources/META-INF/xnat/spawner/site-admin-elements.yaml @@ -322,6 +322,7 @@ userLoginsSessionControls: name: UI.login_failure_message label: Login Failure Message description: Text to show when a user fails to login + value: "?? XNAT:data:siteConfig:UI.login_failure_message" maximumFailedLogins: kind: panel.input.number id: maximumFailedLogins -- GitLab