package org.ovirt.engine.core;
import java.io.IOException;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.ovirt.engine.core.aaa.SsoOAuthServiceUtils;
import org.ovirt.engine.core.uutils.net.URLBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 5429007478757020118L;
private static final Logger log = LoggerFactory.getLogger(LogoutServlet.class);
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String error = null;
String error_code = null;
try {
Map<String, Object> revokeResponse = SsoOAuthServiceUtils.revoke(
(String) request.getSession(true).getAttribute(WelcomeUtils.TOKEN));
error = (String) revokeResponse.get(WelcomeUtils.ERROR);
error_code = (String) revokeResponse.get(WelcomeUtils.ERROR_CODE);
HttpSession session = request.getSession();
if (session != null) {
session.invalidate();
}
} catch (Exception ex) {
log.error("Unable to logout user: {}", ex.getMessage());
}
response.sendRedirect(new URLBuilder(WelcomeUtils.getOauth2CallbackUrl(request))
.addParameter(WelcomeUtils.ERROR, StringUtils.defaultIfEmpty(error, ""))
.addParameter(WelcomeUtils.ERROR_CODE, StringUtils.defaultIfEmpty(error_code, "")).build());
}
}