public boolean isAuthorised(Subject subject, MasterSitemapNode masterNode) { checkNotNull(masterNode, "node"); checkNotNull(subject, "subject"); String virtualPage = sitemap.navigationState(masterNode).getVirtualPage(); checkNotNull(virtualPage, "virtualPage"); checkNotNull( masterNode.getPageAccessControl(), "node.getPageAccessControl(), " + masterNode.getUriSegment()); log.debug("checking page access rights for {}", virtualPage); switch (masterNode.getPageAccessControl()) { case AUTHENTICATION: return subject.isAuthenticated(); case GUEST: return (!subject.isAuthenticated()) && (!subject.isRemembered()); case PERMISSION: return subject.isPermitted(new PagePermission(virtualPage)); case PUBLIC: return true; case ROLES: return subject.hasAllRoles(masterNode.getRoles()); case USER: return (subject.isAuthenticated()) || (subject.isRemembered()); } return false; }