package fi.otavanopisto.pyramus.plugin.muikku; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang3.StringUtils; import fi.internetix.smvc.controllers.PageController; import fi.internetix.smvc.controllers.PageRequestContext; import fi.internetix.smvc.controllers.RequestControllerMapper; import fi.otavanopisto.pyramus.dao.DAOFactory; import fi.otavanopisto.pyramus.dao.users.UserDAO; import fi.otavanopisto.pyramus.domainmodel.users.Role; import fi.otavanopisto.pyramus.domainmodel.users.User; import fi.otavanopisto.pyramus.framework.PyramusViewController; import fi.otavanopisto.pyramus.framework.UserRole; public class IndexViewController extends PyramusViewController implements PageController { private Role[] REDIRECT_ROLES = { Role.GUEST, Role.STUDENT }; @Override public void process(PageRequestContext requestContext) { if (shouldRedirect(requestContext)) { String muikkuHost = MuikkuPluginTools.getMuikkuHost(); if (StringUtils.isNotBlank(muikkuHost)) { requestContext.setRedirectURL(String.format("https://%s", muikkuHost)); return; } } PyramusViewController originalViewController = (PyramusViewController) RequestControllerMapper.getRequestController("index.page.masked"); originalViewController.process(requestContext); } private boolean shouldRedirect(PageRequestContext requestContext) { if (requestContext.isLoggedIn()) { UserDAO userDAO = DAOFactory.getInstance().getUserDAO(); Long loggedUserId = requestContext.getLoggedUserId(); User user = userDAO.findById(loggedUserId); if (user != null) { return ArrayUtils.contains(REDIRECT_ROLES, user.getRole()); } } return false; } @Override public UserRole[] getAllowedRoles() { return new UserRole[] { UserRole.EVERYONE }; } }