package org.ovirt.engine.core.sso.servlets;
import java.io.IOException;
import java.util.Locale;
import java.util.Stack;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.ovirt.engine.core.sso.utils.InteractiveAuth;
import org.ovirt.engine.core.sso.utils.OAuthException;
import org.ovirt.engine.core.sso.utils.SsoConstants;
import org.ovirt.engine.core.sso.utils.SsoContext;
import org.ovirt.engine.core.sso.utils.SsoSession;
import org.ovirt.engine.core.sso.utils.SsoUtils;
public class InteractiveNextAuthServlet extends HttpServlet {
private static final long serialVersionUID = 1188460579367588817L;
private SsoContext ssoContext;
@Override
public void init(ServletConfig config) throws ServletException {
ssoContext = SsoUtils.getSsoContext(config.getServletContext());
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Stack<InteractiveAuth> authStack = SsoUtils.getSsoSession(request).getAuthStack();
if (authStack == null || authStack.isEmpty()) {
SsoUtils.redirectToErrorPage(request, response,
new OAuthException(
SsoConstants.ERR_CODE_UNAUTHORIZED_CLIENT,
ssoContext.getLocalizationUtils().localize(
SsoConstants.APP_ERROR_AUTHENTICATION_REQUIRED,
(Locale) request.getAttribute(SsoConstants.LOCALE))));
} else {
SsoUtils.getSsoSession(request).setStatus(SsoSession.Status.inprogress);
response.sendRedirect(authStack.pop().getAuthUrl(request, response));
}
}
}