/** * 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.curate; import java.sql.SQLException; import org.apache.commons.cli.Options; import org.dspace.authorize.service.AuthorizeService; import org.dspace.core.Context; import org.dspace.scripts.configuration.ScriptConfiguration; import org.springframework.beans.factory.annotation.Autowired; /** * The {@link ScriptConfiguration} for the {@link CurationCli} script * * @author Maria Verdonck (Atmire) on 23/06/2020 */ public class CurationScriptConfiguration extends ScriptConfiguration { @Autowired private AuthorizeService authorizeService; private Class dspaceRunnableClass; @Override public Class getDspaceRunnableClass() { return this.dspaceRunnableClass; } @Override public void setDspaceRunnableClass(Class dspaceRunnableClass) { this.dspaceRunnableClass = dspaceRunnableClass; } /** * Only admin can run Curation script via the scripts and processes endpoints. * @param context The relevant DSpace context * @return True if currentUser is admin, otherwise false */ @Override public boolean isAllowedToExecute(Context context) { try { return authorizeService.isAdmin(context); } catch (SQLException e) { throw new RuntimeException("SQLException occurred when checking if the current user is an admin", e); } } @Override public Options getOptions() { if (options == null) { super.options = CurationClientOptions.constructOptions(); } return options; } }