/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.xoai.filter; import java.sql.SQLException; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.dspace.authorize.factory.AuthorizeServiceFactory; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.Item; import org.dspace.core.Constants; import org.dspace.handle.factory.HandleServiceFactory; import org.dspace.handle.service.HandleService; import org.dspace.xoai.data.DSpaceItem; import org.dspace.xoai.filter.results.SolrFilterResult; /** * * @author Lyncode Development Team (dspace at lyncode dot com) */ public class DSpaceAuthorizationFilter extends DSpaceFilter { private static final Logger log = LogManager.getLogger(DSpaceAuthorizationFilter.class); private static final AuthorizeService authorizeService = AuthorizeServiceFactory.getInstance().getAuthorizeService(); private static final HandleService handleService = HandleServiceFactory.getInstance().getHandleService(); @Override public boolean isShown(DSpaceItem item) { boolean pub = false; try { // If Handle or Item are not found, return false String handle = DSpaceItem.parseHandle(item.getIdentifier()); if (handle == null) return false; Item dspaceItem = (Item) handleService.resolveToObject(context, handle); if (dspaceItem == null) return false; // Check if READ access allowed on Item pub = authorizeService.authorizeActionBoolean(context, dspaceItem, Constants.READ); } catch (SQLException ex) { log.error(ex.getMessage(), ex); } return pub; } @Override public SolrFilterResult buildSolrQuery() { return new SolrFilterResult("item.public:true"); } }