/*
* Copyright (C) 2014 Jan Pokorsky
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cz.cas.lib.proarc.authentication.utils;
import cz.cas.lib.proarc.authentication.Authenticators;
import cz.cas.lib.proarc.authentication.ProarcAuthFilter;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.MediaType;
import org.apache.commons.io.IOUtils;
/**
*
* @author Jan Pokorsky
*/
public final class AuthUtils {
/**
* The HTTP header in unauthorized response to choose a login form/type on client.
* Expect values like proarc, desa, ....
*/
public static final String HEADER_AUTHENTICATE_TYPE = "ProArc-Authenticate";
/**
* Writes the authentication required status to the HTTP response.
* @param response response
* @throws IOException failure
* @see #HEADER_AUTHENTICATE_TYPE
* @see <a href='http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/docs/Relogin.html'>SmartGWT Relogin</a>
*/
public static void setLoginRequiredResponse(HttpServletResponse response) throws IOException {
response.setHeader(HEADER_AUTHENTICATE_TYPE, Authenticators.getInstance().getLoginType());
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
response.setContentType(MediaType.TEXT_HTML);
InputStream res = ProarcAuthFilter.class.getResourceAsStream("loginRequiredMarker.html");
try {
IOUtils.copy(res, response.getOutputStream());
res.close();
} finally {
IOUtils.closeQuietly(res);
}
}
/**
* Writes the authentication OK status to the HTTP response.
* @param response response
* @throws IOException failure
* @see <a href='http://www.smartclient.com/smartgwt/javadoc/com/smartgwt/client/docs/Relogin.html'>SmartGWT Relogin</a>
*/
public static void setLoginSuccesResponse(HttpServletResponse response) throws IOException {
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType(MediaType.TEXT_HTML);
InputStream res = ProarcAuthFilter.class.getResourceAsStream("loginSuccessMarker.html");
try {
IOUtils.copy(res, response.getOutputStream());
res.close();
} finally {
IOUtils.closeQuietly(res);
}
}
}