package fi.otavanopisto.muikku.plugins.workspace; import javax.inject.Inject; import org.apache.commons.lang3.StringUtils; import org.ocpsoft.rewrite.annotation.RequestAction; import fi.otavanopisto.muikku.jsf.NavigationController; import fi.otavanopisto.muikku.jsf.NavigationRules; import fi.otavanopisto.muikku.model.workspace.WorkspaceEntity; import fi.otavanopisto.muikku.model.workspace.WorkspaceUserEntity; import fi.otavanopisto.muikku.schooldata.WorkspaceController; import fi.otavanopisto.muikku.security.MuikkuPermissions; import fi.otavanopisto.muikku.session.SessionController; import fi.otavanopisto.muikku.users.WorkspaceUserEntityController; public abstract class AbstractWorkspaceBackingBean { @Inject private WorkspaceController workspaceController; @Inject private WorkspaceUserEntityController workspaceUserEntityController; @Inject private NavigationController navigationController; @Inject private SessionController sessionController; @RequestAction public String checkAccess() { String urlName = getWorkspaceUrlName(); if (StringUtils.isBlank(urlName)) { return NavigationRules.NOT_FOUND; } WorkspaceEntity workspaceEntity = workspaceController.findWorkspaceEntityByUrlName(urlName); if (workspaceEntity == null) { return NavigationRules.NOT_FOUND; } switch (workspaceEntity.getAccess()) { case ANYONE: break; case LOGGED_IN: if (!sessionController.isLoggedIn()) { return navigationController.requireLogin(); } break; case MEMBERS_ONLY: if (!sessionController.isLoggedIn()) { return navigationController.requireLogin(); } WorkspaceUserEntity workspaceUserEntity = workspaceUserEntityController.findWorkspaceUserByWorkspaceEntityAndUserIdentifier(workspaceEntity, sessionController.getLoggedUser()); if (workspaceUserEntity == null) { if (!sessionController.hasWorkspacePermission(MuikkuPermissions.ACCESS_MEMBERS_ONLY_WORKSPACE, workspaceEntity)) { return NavigationRules.ACCESS_DENIED; } } break; } return null; } public abstract String getWorkspaceUrlName(); }