Skip to content

Commit

Permalink
add support for security filter
Browse files Browse the repository at this point in the history
  • Loading branch information
SavvasMisaghMoayyed committed Dec 9, 2017
1 parent 24041b4 commit 21f3e32
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@
* @author Scott Battaglia
* @since 3.0.0
*/
public class ServiceThemeResolver extends AbstractThemeResolver {
public class RegisteredServiceThemeResolver extends AbstractThemeResolver {

private static final Logger LOGGER = LoggerFactory.getLogger(ServiceThemeResolver.class);
private static final Logger LOGGER = LoggerFactory.getLogger(RegisteredServiceThemeResolver.class);

private final ServicesManager servicesManager;

Expand All @@ -61,17 +61,17 @@ public class ServiceThemeResolver extends AbstractThemeResolver {
*/
private final Map<Pattern, String> overrides;

public ServiceThemeResolver(final ServicesManager servicesManager,
final Map<String, String> mobileOverrides,
final AuthenticationServiceSelectionPlan serviceSelectionStrategies,
final ResourceLoader resourceLoader) {
public RegisteredServiceThemeResolver(final ServicesManager servicesManager,
final Map<String, String> mobileOverrides,
final AuthenticationServiceSelectionPlan serviceSelectionStrategies,
final ResourceLoader resourceLoader) {
super();
this.servicesManager = servicesManager;
this.authenticationRequestServiceSelectionStrategies = serviceSelectionStrategies;
this.resourceLoader = resourceLoader;
this.overrides = mobileOverrides.entrySet()
.stream()
.collect(Collectors.toMap(entry -> Pattern.compile(entry.getKey()), Map.Entry::getValue));
.stream()
.collect(Collectors.toMap(entry -> Pattern.compile(entry.getKey()), Map.Entry::getValue));
}

@Override
Expand All @@ -87,13 +87,13 @@ public String resolveThemeName(final HttpServletRequest request) {
}

overrides.entrySet()
.stream()
.filter(entry -> entry.getKey().matcher(userAgent).matches())
.findFirst()
.ifPresent(entry -> {
request.setAttribute("isMobile", Boolean.TRUE.toString());
request.setAttribute("browserType", entry.getValue());
});
.stream()
.filter(entry -> entry.getKey().matcher(userAgent).matches())
.findFirst()
.ifPresent(entry -> {
request.setAttribute("isMobile", Boolean.TRUE.toString());
request.setAttribute("browserType", entry.getValue());
});

final RequestContext context = RequestContextHolder.getRequestContext();
final Service serviceContext = WebUtils.getService(context);
Expand All @@ -105,8 +105,7 @@ public String resolveThemeName(final HttpServletRequest request) {

final RegisteredService rService = this.servicesManager.findServiceBy(service);
if (rService == null || !rService.getAccessStrategy().isServiceAccessAllowed()) {
LOGGER.warn("No registered service is found to match [{}] or service access is disallowed. Using default theme [{}]",
service, getDefaultThemeName());
LOGGER.warn("No registered service is found to match [{}] or service access is disallowed. Using default theme [{}]", service, getDefaultThemeName());
return getDefaultThemeName();
}
if (StringUtils.isBlank(rService.getTheme())) {
Expand All @@ -131,12 +130,12 @@ protected String determineThemeNameToChoose(final HttpServletRequest request,
final RegisteredService rService) {
try {
LOGGER.debug("Service [{}] is configured to use a custom theme [{}]", rService, rService.getTheme());

final Resource resource = ResourceUtils.getRawResourceFrom(rService.getTheme());
if (resource instanceof FileSystemResource) {
if (resource instanceof FileSystemResource && resource.exists()) {
LOGGER.debug("Executing groovy script to determine theme for [{}]", service.getId());
final String result = ScriptingUtils.executeGroovyScript(resource, new Object[]{service, rService,
request.getQueryString(), HttpRequestUtils.getRequestHeaders(request), LOGGER}, String.class);
request.getQueryString(), HttpRequestUtils.getRequestHeaders(request), LOGGER}, String.class);
return StringUtils.defaultIfBlank(result, getDefaultThemeName());
}
if (resource instanceof UrlResource) {
Expand All @@ -148,7 +147,7 @@ protected String determineThemeNameToChoose(final HttpServletRequest request,
return StringUtils.defaultIfBlank(result, getDefaultThemeName());
}
}

final CasThemeResourceBundleMessageSource messageSource = new CasThemeResourceBundleMessageSource();
messageSource.setBasename(rService.getTheme());
if (messageSource.doGetBundle(rService.getTheme(), request.getLocale()) != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import org.apereo.cas.services.web.CasThymeleafOutputTemplateHandler;
import org.apereo.cas.services.web.ChainingThemeResolver;
import org.apereo.cas.services.web.RequestHeaderThemeResolver;
import org.apereo.cas.services.web.ServiceThemeResolver;
import org.apereo.cas.services.web.RegisteredServiceThemeResolver;
import org.apereo.cas.services.web.ThemeBasedViewResolver;
import org.apereo.cas.services.web.ThemeViewResolver;
import org.apereo.cas.services.web.ThemeViewResolverFactory;
Expand Down Expand Up @@ -163,7 +163,7 @@ public ThemeResolver themeResolver() {
cookieThemeResolver.setCookiePath(tgc.getPath());
cookieThemeResolver.setCookieSecure(tgc.isSecure());

final ServiceThemeResolver serviceThemeResolver = new ServiceThemeResolver(servicesManager,
final RegisteredServiceThemeResolver serviceThemeResolver = new RegisteredServiceThemeResolver(servicesManager,
serviceThemeResolverSupportedBrowsers(), authenticationRequestServiceSelectionStrategies,
this.resourceLoader);
serviceThemeResolver.setDefaultThemeName(defaultThemeName);
Expand Down

0 comments on commit 21f3e32

Please sign in to comment.