public class ReconnectFilter extends GenericFilterBean
Servlet filter that intercepts Spring Social ApiException
s thrown in the course of a request and attempts to reconcile any connection-related
problems by deleting the stale/revoked connection and walking the user through the connection process to obtain a new connection.
This filter handles the exceptions via the following flow:
ConnectController
to kick of the authorization flow.Constructor and Description |
---|
ReconnectFilter(UsersConnectionRepository usersConnectionRepository,
UserIdSource userIdSource)
Creates an instance of
ReconnectFilter . |
Modifier and Type | Method and Description |
---|---|
void |
doFilter(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response,
javax.servlet.FilterChain chain) |
protected String |
getRefreshUrl(javax.servlet.http.HttpServletRequest request,
ApiException apiException)
Returns the URL to redirect to if it is determined that a connection needs to be renewed.
|
protected boolean |
shouldPerformRefreshPostRequest(javax.servlet.http.HttpServletRequest request)
Determines whether or not the handled request should be converted to a POST request to
ConnectController for authorization. |
addRequiredProperty, afterPropertiesSet, destroy, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
public ReconnectFilter(UsersConnectionRepository usersConnectionRepository, UserIdSource userIdSource)
ReconnectFilter
.usersConnectionRepository
- a UsersConnectionRepository
used to create a ConnectionRepository
for the current user.userIdSource
- an instance of UserIdSource
to obtain the current user's ID used to create a ConnectionFactory
.public void doFilter(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain chain) throws IOException, javax.servlet.ServletException
IOException
javax.servlet.ServletException
protected String getRefreshUrl(javax.servlet.http.HttpServletRequest request, ApiException apiException)
ConnectController
for authorization.
May be overridden by a subclass to handle other flows, such as redirecting to a page that informs the user that a new connection is needed.request
- The HTTP request that triggered the exception.apiException
- The ApiException
.protected boolean shouldPerformRefreshPostRequest(javax.servlet.http.HttpServletRequest request)
ConnectController
for authorization.
By default, will return true if the request is a GET request for /connect/{provider ID} and there is a "reconnect" query parameter.
May be overridden by a subclass to consider other criteria in deciding whether or not to convert the request.request
- the handled request.ConnectController
.