package services;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.text.ParseException;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.molgenis.framework.db.DatabaseException;
import org.molgenis.framework.server.MolgenisContext;
import org.molgenis.framework.server.MolgenisRequest;
import org.molgenis.framework.server.MolgenisResponse;
import org.molgenis.framework.server.MolgenisService;
import org.molgenis.framework.ui.ApplicationController;
import plugins.autohidelogin.AutoHideLogin;
/**
* Hide/unhide the login tab via a boolean and this service to flip it. See:
* /molgenis_apps/modules/xgap/plugins/autohidelogin/AutoHideLogin.java
*
* @author joerivandervelde
*/
public class AutoHideLoginService implements MolgenisService
{
private MolgenisContext mc;
public AutoHideLoginService(MolgenisContext mc)
{
this.mc = mc;
}
private static Logger logger = Logger.getLogger(AutoHideLoginService.class);
@Override
public void handleRequest(MolgenisRequest request, MolgenisResponse response) throws ParseException,
DatabaseException, IOException
{
HttpServletResponse res = response.getResponse();
res.setStatus(HttpServletResponse.SC_OK);
res.setContentType("text/html;charset=UTF8");
OutputStream out = res.getOutputStream();
PrintStream p = new PrintStream(new BufferedOutputStream(out), false, "UTF8");
ApplicationController molgenis = (ApplicationController) request.getRequest().getSession()
.getAttribute("application");
try
{
// if null, make true
if (molgenis.sessionVariables.get(AutoHideLogin.AUTOHIDE_LOGIN) == null)
{
molgenis.sessionVariables.put(AutoHideLogin.AUTOHIDE_LOGIN, true);
}
else
{
// if true, make false
if ((Boolean) molgenis.sessionVariables.get(AutoHideLogin.AUTOHIDE_LOGIN) == true)
{
molgenis.sessionVariables.put(AutoHideLogin.AUTOHIDE_LOGIN, false);
}
// if false, make true
else
{
molgenis.sessionVariables.put(AutoHideLogin.AUTOHIDE_LOGIN, true);
}
}
// write a meta refresh back to the login tab
p.println("<HTML><HEAD><META HTTP-EQUIV=\"refresh\" CONTENT=\"0;URL=molgenis.do?__target=main&select=UserLogin\"></HEAD><BODY></BODY></HTML>");
logger.info("serving " + request.getRequest().getRequestURI());
}
catch (Exception e)
{
p.print("\n\n");
e.printStackTrace(p);
}
finally
{
p.flush();
out.close();
}
}
}