Search in sources :

Example 1 with ArgumentExtractor

use of org.apereo.cas.web.support.ArgumentExtractor in project cas by apereo.

the class RegisteredServiceThemeBasedViewResolver method loadView.

@Override
protected View loadView(final String viewName, final Locale locale) throws Exception {
    final View view = super.loadView(viewName, locale);
    final RequestContext requestContext = RequestContextHolder.getRequestContext();
    final WebApplicationService service;
    final HttpServletResponse response;
    final List<ArgumentExtractor> argumentExtractorList = Collections.singletonList(this.argumentExtractor);
    if (requestContext != null) {
        response = WebUtils.getHttpServletResponse(requestContext);
        service = WebUtils.getService(argumentExtractorList, requestContext);
    } else {
        final HttpServletRequest request = WebUtils.getHttpServletRequestFromRequestAttributes();
        service = WebUtils.getService(argumentExtractorList, request);
        response = WebUtils.getHttpServletResponseFromRequestAttributes();
    }
    if (service == null) {
        return view;
    }
    final RegisteredService registeredService = this.servicesManager.findServiceBy(service);
    if (registeredService != null) {
        try {
            RegisteredServiceAccessStrategyUtils.ensureServiceAccessIsAllowed(service, registeredService);
        } catch (final Exception e) {
            response.setStatus(HttpStatus.UNAUTHORIZED.value());
        }
    }
    if (registeredService != null && StringUtils.hasText(registeredService.getTheme()) && view instanceof AbstractThymeleafView) {
        LOGGER.debug("Attempting to locate views for service [{}] with theme [{}]", registeredService.getServiceId(), registeredService.getTheme());
        final AbstractThymeleafView thymeleafView = (AbstractThymeleafView) view;
        final String viewUrl = registeredService.getTheme() + '/' + thymeleafView.getTemplateName();
        final String viewLocationUrl = prefix.concat(viewUrl).concat(suffix);
        LOGGER.debug("Attempting to locate view at [{}]", viewLocationUrl);
        final TemplateLocation location = new TemplateLocation(viewLocationUrl);
        if (location.exists(getApplicationContext())) {
            LOGGER.debug("Found view [{}]", viewUrl);
            thymeleafView.setTemplateName(viewUrl);
        } else {
            LOGGER.debug("View [{}] does not exist. Falling back to default view at [{}]", viewLocationUrl, thymeleafView.getTemplateName());
        }
    }
    return view;
}
Also used : ArgumentExtractor(org.apereo.cas.web.support.ArgumentExtractor) HttpServletRequest(javax.servlet.http.HttpServletRequest) WebApplicationService(org.apereo.cas.authentication.principal.WebApplicationService) RegisteredService(org.apereo.cas.services.RegisteredService) TemplateLocation(org.springframework.boot.autoconfigure.template.TemplateLocation) AbstractThymeleafView(org.thymeleaf.spring4.view.AbstractThymeleafView) HttpServletResponse(javax.servlet.http.HttpServletResponse) RequestContext(org.springframework.webflow.execution.RequestContext) AbstractThymeleafView(org.thymeleaf.spring4.view.AbstractThymeleafView) View(org.springframework.web.servlet.View)

Example 2 with ArgumentExtractor

use of org.apereo.cas.web.support.ArgumentExtractor in project cas by apereo.

the class InitialFlowSetupActionCookieTests method setUp.

@Before
public void setUp() throws Exception {
    this.warnCookieGenerator = new CookieRetrievingCookieGenerator("warn", "", 2, false, null, false);
    this.warnCookieGenerator.setCookiePath(StringUtils.EMPTY);
    this.tgtCookieGenerator = new CookieRetrievingCookieGenerator("tgt", "", 2, false, null, false);
    this.tgtCookieGenerator.setCookiePath(StringUtils.EMPTY);
    final List<ArgumentExtractor> argExtractors = Collections.singletonList(new DefaultArgumentExtractor(new WebApplicationServiceFactory()));
    final ServicesManager servicesManager = mock(ServicesManager.class);
    when(servicesManager.findServiceBy(any(Service.class))).thenReturn(RegisteredServiceTestUtils.getRegisteredService("test"));
    this.action = new InitialFlowSetupAction(argExtractors, servicesManager, authenticationRequestServiceSelectionStrategies, tgtCookieGenerator, warnCookieGenerator, casProperties);
    this.action.afterPropertiesSet();
}
Also used : ArgumentExtractor(org.apereo.cas.web.support.ArgumentExtractor) DefaultArgumentExtractor(org.apereo.cas.web.support.DefaultArgumentExtractor) DefaultArgumentExtractor(org.apereo.cas.web.support.DefaultArgumentExtractor) ServicesManager(org.apereo.cas.services.ServicesManager) CookieRetrievingCookieGenerator(org.apereo.cas.web.support.CookieRetrievingCookieGenerator) WebApplicationServiceFactory(org.apereo.cas.authentication.principal.WebApplicationServiceFactory) Service(org.apereo.cas.authentication.principal.Service) InitialFlowSetupAction(org.apereo.cas.web.flow.login.InitialFlowSetupAction) Before(org.junit.Before)

Aggregations

ArgumentExtractor (org.apereo.cas.web.support.ArgumentExtractor)2 HttpServletRequest (javax.servlet.http.HttpServletRequest)1 HttpServletResponse (javax.servlet.http.HttpServletResponse)1 Service (org.apereo.cas.authentication.principal.Service)1 WebApplicationService (org.apereo.cas.authentication.principal.WebApplicationService)1 WebApplicationServiceFactory (org.apereo.cas.authentication.principal.WebApplicationServiceFactory)1 RegisteredService (org.apereo.cas.services.RegisteredService)1 ServicesManager (org.apereo.cas.services.ServicesManager)1 InitialFlowSetupAction (org.apereo.cas.web.flow.login.InitialFlowSetupAction)1 CookieRetrievingCookieGenerator (org.apereo.cas.web.support.CookieRetrievingCookieGenerator)1 DefaultArgumentExtractor (org.apereo.cas.web.support.DefaultArgumentExtractor)1 Before (org.junit.Before)1 TemplateLocation (org.springframework.boot.autoconfigure.template.TemplateLocation)1 View (org.springframework.web.servlet.View)1 RequestContext (org.springframework.webflow.execution.RequestContext)1 AbstractThymeleafView (org.thymeleaf.spring4.view.AbstractThymeleafView)1