in github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthWebFilter.java [71:115]
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
log.debug(
"OAuthWebFilter(" + httpRequest.getRequestURL() + ") code=" + request.getParameter("code"));
Cookie gerritCookie = getGerritCookie(httpRequest);
try {
GitHubLogin ghLogin = loginProvider.get(httpRequest);
if (OAuthProtocol.isOAuthRequest(httpRequest)) {
login(request, httpRequest, httpResponse, ghLogin);
} else {
if (OAuthProtocol.isOAuthLogout(httpRequest)) {
httpResponse = (HttpServletResponse) logout(request, httpResponse, chain, httpRequest);
}
if (ghLogin != null && ghLogin.isLoggedIn()) {
httpRequest =
new AuthenticatedHttpRequest(
httpRequest,
config.httpHeader,
ghLogin.getMyself().getLogin(),
config.oauthHttpHeader,
GITHUB_EXT_ID + ghLogin.getToken().accessToken);
}
chain.doFilter(httpRequest, httpResponse);
}
} finally {
HttpSession httpSession = httpRequest.getSession();
if (gerritCookie != null && httpSession != null) {
String gerritCookieValue = gerritCookie.getValue();
String gerritSessionValue = (String) httpSession.getAttribute("GerritAccount");
if (gerritSessionValue == null) {
httpSession.setAttribute("GerritAccount", gerritCookieValue);
} else if (!gerritSessionValue.equals(gerritCookieValue)) {
httpSession.invalidate();
}
}
}
}