/**
* 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.app.xmlui.aspect.statisticsElasticSearch;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.selection.Selector;
import org.apache.log4j.Logger;
import org.dspace.app.xmlui.utils.ContextUtil;
import org.dspace.core.Context;
import org.dspace.eperson.Group;
import java.sql.SQLException;
import java.util.Map;
/**
* Part of cocoon authentication for resource. Requires that user (eperson) is a member of a specified group.
*
* @author Peter Dietz (pdietz84@gmailcom)
*/
public class SpecifiedGroupAuthenticatedSelector implements Selector {
private static Logger log = Logger.getLogger(SpecifiedGroupAuthenticatedSelector.class);
private String SPECIFIED_GROUP = "statistics_viewer";
@Override
public boolean select(String groupName, Map objectModel, Parameters parameters) {
boolean authorized = false;
if(groupName.equals("statistics_viewer")) {
try
{
Context context = ContextUtil.obtainContext(objectModel);
Group statsGroup = Group.findByName(context, groupName);
if(statsGroup != null && context.getCurrentUser() != null) {
//The Stats Group exists, now lets check that the current user is a member.
if(statsGroup.isMember(context.getCurrentUser())) {
//YES, this person is a member of this group. Let them through.
authorized = true;
}
}
} catch (SQLException e) {
log.error("SQL Error during stats group lookup.");
}
} else {
log.warn("Pattern/test must be statistics_viewer");
}
return authorized;
}
}