package org.sakaiproject.tool.section;
import java.io.IOException;
import java.util.Calendar;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.sakaiproject.section.api.facade.manager.Authn;
import org.sakaiproject.section.api.facade.manager.Authz;
import org.sakaiproject.section.api.facade.manager.Context;
import org.sakaiproject.section.api.SectionManager;
import org.sakaiproject.component.section.sakai.SectionManagerImpl;
import org.sakaiproject.tool.section.jsf.backingbean.StudentViewBean;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.WebApplicationContext;
public class EntryServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Log log = LogFactory.getLog(EntryServlet.class);
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, java.io.IOException {
doGet(req, resp);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) {
if(log.isDebugEnabled()) log.debug("Entering sections tool... determining role appropriate view");
ApplicationContext ac = (ApplicationContext)getServletContext().getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
Authn authnService = (Authn)ac.getBean("org.sakaiproject.section.api.facade.manager.Authn");
Authz authzService = (Authz)ac.getBean("org.sakaiproject.section.api.facade.manager.Authz");
Context contextService = (Context)ac.getBean("org.sakaiproject.section.api.facade.manager.Context");
String userUid = authnService.getUserUid(null);
String siteContext = contextService.getContext(null);
boolean viewAllSections = authzService.isViewAllSectionsAllowed(userUid, siteContext);
boolean viewOwnSections = authzService.isViewOwnSectionsAllowed(userUid, siteContext);
StringBuilder path = new StringBuilder(request.getContextPath());
if(viewAllSections) {
if(log.isDebugEnabled()) log.debug("Sending user to the overview page");
path.append("/overview.jsf");
} else if (viewOwnSections) {
if(log.isDebugEnabled()) log.debug("Sending user to the student view page");
//Control if the access to the groups is closed
SectionManager sm = (SectionManager)ac.getBean("org.sakaiproject.section.api.SectionManager");
Calendar open = sm.getOpenDate(siteContext);
Calendar now = Calendar.getInstance();
if (now.before(open)) {
log.debug("SECTIONS: Grupos Cerrados...");
path.append("/closed.jsf");
}else {
path.append("/studentView.jsf");
};
} else {
// The role filter has not been invoked yet, so this could happen here
path.append("/noRole.jsp");
}
String queryString = request.getQueryString();
if (queryString != null) {
path.append("?").append(queryString);
}
try {
response.sendRedirect(path.toString());
} catch (IOException e) {
log.error("Could not redirect user: " + e);
}
}
}