
prerna.reactor.security.ValidateProjectDependenciesReactor Maven / Gradle / Ivy
The newest version!
package prerna.reactor.security;
import java.util.HashMap;
import java.util.Map;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import prerna.auth.User;
import prerna.auth.utils.SecurityEngineUtils;
import prerna.auth.utils.SecurityProjectUtils;
import prerna.project.api.IProject;
import prerna.project.impl.notebook.INotebookHelper;
import prerna.reactor.AbstractReactor;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.ReactorKeysEnum;
import prerna.sablecc2.om.execptions.SemossPixelException;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import prerna.util.Utility;
public class ValidateProjectDependenciesReactor extends AbstractReactor {
private static final Logger classLogger = LogManager.getLogger(ValidateProjectDependenciesReactor.class);
public ValidateProjectDependenciesReactor() {
this.keysToGet = new String[]{ ReactorKeysEnum.PROJECT.getKey() };
this.keyRequired = new int[] {1};
}
@Override
public NounMetadata execute() {
organizeKeys();
User user = this.insight.getUser();
String projectId = this.keyValue.get(this.keysToGet[0]);
if(!SecurityProjectUtils.userCanViewProject(this.insight.getUser(), projectId)) {
// you don't have access
throw new IllegalArgumentException("Project/App does not exist or user does not have access to the project");
}
IProject project = Utility.getProject(projectId);
IProject.PROJECT_TYPE ptype = project.getProjectType();
if (!ptype.equals(IProject.PROJECT_TYPE.BLOCKS)) {
throw new SemossPixelException("App " + projectId + " is not a blocks project.");
}
Map engineMap = project.getEngineDependencies();
Map varToAccess = new HashMap<>();
Map eIdToAccess = new HashMap<>();
for (String varName : engineMap.keySet()) {
String engineId = engineMap.get(varName);
boolean canView = false;
if(!engineId.equals(INotebookHelper.UNDEFINED_VALUE)) {
canView = SecurityEngineUtils.userCanViewEngine(user, engineId);
}
varToAccess.put(varName, canView);
eIdToAccess.put(engineId, canView);
}
Map> validationMap = new HashMap<>();
validationMap.put("engine", eIdToAccess);
validationMap.put("vars", varToAccess);
NounMetadata noun = new NounMetadata(validationMap, PixelDataType.MAP);
return noun;
}
@Override
public String getReactorDescription() {
return "Return true if the user has access to all engine dependencies listed in this project";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy