What Is Sour Dough
InformationMarch 20, 2017
package ab.ce.defg;
import com.day.cq.wcm.api.Page; import com.day.cq.wcm.api.PageFilter; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap;
import javax.jcr.Node; import javax.jcr.RepositoryException; import javax.jcr.Session;
public class SitemapPageFilter extends PageFilter {
@Override
public boolean includes(Page page) {
try {
//takes care of isSearchable, hideInNav, hidden, offTime etc
boolean defualtIncludeCheck = super.includes(page);
if(defualtIncludeCheck){
ValueMap properties = page.getProperties();
boolean isPromotable = properties.get("isPromotable", false);
Resource contentResource = page.getContentResource();
Session session = contentResource.getResourceResolver().adaptTo(Session.class);
boolean hasReadAccess = hasReadAccess(page.adaptTo(Node.class), session);
if (isPromotable && hasReadAccess) {
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
private boolean hasReadAccess(Node pageNode, Session userSession) throws RepositoryException {
String path = pageNode.getPath();
try {
userSession.checkPermission(path, Session.ACTION_READ);
} catch (java.security.AccessControlException e) {
return false;
}
return true;
}
}