package org.apereo.cas.support.oauth.web.response.accesstoken.ext;
import org.apereo.cas.CentralAuthenticationService;
import org.apereo.cas.configuration.model.support.oauth.OAuthProperties;
import org.apereo.cas.services.ServicesManager;
import org.apereo.cas.ticket.registry.TicketRegistry;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* This is {@link BaseAccessTokenGrantRequestExtractor}.
*
* @author Misagh Moayyed
* @since 5.1.0
*/
@EnableTransactionManagement(proxyTargetClass = true)
@Transactional(transactionManager = "ticketTransactionManager", readOnly = false)
public abstract class BaseAccessTokenGrantRequestExtractor {
/**
* The Services manager.
*/
protected final ServicesManager servicesManager;
/**
* The Ticket registry.
*/
protected final TicketRegistry ticketRegistry;
/**
* The Request.
*/
protected final HttpServletRequest request;
/**
* The Response.
*/
protected final HttpServletResponse response;
/**
* OAuth settings.
*/
protected final OAuthProperties oAuthProperties;
/**
* The Services manager.
*/
protected final CentralAuthenticationService centralAuthenticationService;
public BaseAccessTokenGrantRequestExtractor(final ServicesManager servicesManager, final TicketRegistry ticketRegistry,
final HttpServletRequest request, final HttpServletResponse response,
final CentralAuthenticationService centralAuthenticationService,
final OAuthProperties oAuthProperties) {
this.servicesManager = servicesManager;
this.ticketRegistry = ticketRegistry;
this.request = request;
this.response = response;
this.centralAuthenticationService = centralAuthenticationService;
this.oAuthProperties = oAuthProperties;
}
/**
* Extract access token request for grant.
*
* @return the access token request data holder
*/
public abstract AccessTokenRequestDataHolder extract();
/**
* Supports grant type?
*
* @param context the context
* @return true/false
*/
public abstract boolean supports(HttpServletRequest context);
}