package fi.otavanopisto.pyramus.security.impl; import java.util.Locale; import javax.annotation.PostConstruct; import javax.ejb.Stateful; import javax.enterprise.context.SessionScoped; import javax.enterprise.inject.Any; import javax.enterprise.inject.Instance; import javax.faces.context.FacesContext; import javax.inject.Inject; import fi.otavanopisto.security.ContextReference; import fi.otavanopisto.security.PermissionResolver; @Stateful @SessionScoped public abstract class AbstractSessionControllerImpl implements SessionController { // @Override // public void login(Long userId) { // this.loggedUserId = userId; // } // @Override // public void logout() { // loggedUserId = null; // } @Override public Locale getLocale() { if (locale != null) return locale; else return FacesContext.getCurrentInstance().getExternalContext().getRequestLocale(); } @Override public void setLocale(Locale locale) { this.locale = locale; } // public boolean isLoggedIn() { // return loggedUserId != null; // } @PostConstruct private void init() { // loggedUserId = null; } @Override public boolean hasPermission(String permission, ContextReference contextReference) { PermissionResolver permissionResolver = getPermissionResolver(permission); if (isLoggedIn()) { return isSuperuser() || permissionResolver.hasPermission(permission, contextReference, getUser()); } else { return permissionResolver.hasEveryonePermission(permission, contextReference); } } @Inject @Any private Instance<PermissionResolver> permissionResolvers; private PermissionResolver getPermissionResolver(String permission) { for (PermissionResolver resolver : permissionResolvers) { if (resolver.handlesPermission(permission)) return resolver; } return null; } private Locale locale; // private Long loggedUserId; // @Override // public User getUser() { // if (isLoggedIn()) { // StaffMemberDAO userDAO = DAOFactory.getInstance().getStaffMemberDAO(); // // return userDAO.findById(loggedUserId); // } else // return null; // } @Override public boolean isSuperuser() { // TODO: Admin? return false; } @Override public boolean hasEnvironmentPermission(String permission) { return hasPermission(permission, null); } }