diff --git a/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java b/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java index 3c7cd76ed63275a24726000f2aad337ff99ca7e0..72b7991ac0cd5a036817781bb7d6f76c0a4f3a76 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 0000000000000000000000000000000000000000..9c9b82103ef6d64a80e67c9fed007455c14b6afa --- /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 c537974f82cfe560951fe59e027e550547147bf1..a861a15b1afdc80923da4ab5cd49ca2ca138a6d7 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