Skip to content

Commit

Permalink
[KNOWAGE-8327] Limit visibility of dataset by user role
Browse files Browse the repository at this point in the history
  • Loading branch information
kerny3d committed May 29, 2024
1 parent c41be3a commit 4c5dbce
Showing 1 changed file with 55 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.LogMF;
import org.apache.log4j.Logger;
import org.geotools.data.DataSourceException;
import org.jasypt.encryption.pbe.PBEStringEncryptor;
import org.jboss.resteasy.plugins.providers.html.View;
import org.json.JSONArray;
Expand Down Expand Up @@ -93,6 +94,8 @@
import it.eng.spagobi.services.rest.annotations.ManageAuthorization;
import it.eng.spagobi.services.rest.annotations.UserConstraint;
import it.eng.spagobi.services.serialization.JsonConverter;
import it.eng.spagobi.tenant.Tenant;
import it.eng.spagobi.tenant.TenantManager;
import it.eng.spagobi.tools.catalogue.bo.MetaModel;
import it.eng.spagobi.tools.catalogue.dao.IMetaModelsDAO;
import it.eng.spagobi.tools.dataset.DatasetManagementAPI;
Expand All @@ -106,6 +109,7 @@
import it.eng.spagobi.tools.dataset.common.datawriter.IDataWriter;
import it.eng.spagobi.tools.dataset.common.metadata.IFieldMetaData;
import it.eng.spagobi.tools.dataset.common.metadata.IMetaData;
import it.eng.spagobi.tools.dataset.constants.DatasetFunctionsConfig;
import it.eng.spagobi.tools.dataset.dao.DataSetFactory;
import it.eng.spagobi.tools.dataset.dao.IDataSetDAO;
import it.eng.spagobi.tools.dataset.dao.ISbiDataSetDAO;
Expand All @@ -129,7 +133,11 @@
import it.eng.spagobi.tools.dataset.persist.PersistedHDFSManager;
import it.eng.spagobi.tools.dataset.persist.PersistedTableManager;
import it.eng.spagobi.tools.dataset.utils.DataSetUtilities;
import it.eng.spagobi.tools.datasource.bo.IDataSource;
import it.eng.spagobi.tools.datasource.dao.IDataSourceDAO;
import it.eng.spagobi.utilities.database.DataBaseException;
import it.eng.spagobi.utilities.database.DataBaseFactory;
import it.eng.spagobi.utilities.database.IDataBase;
import it.eng.spagobi.utilities.exceptions.ActionNotPermittedException;
import it.eng.spagobi.utilities.exceptions.SpagoBIRestServiceException;
import it.eng.spagobi.utilities.exceptions.SpagoBIRuntimeException;
Expand Down Expand Up @@ -186,6 +194,53 @@ public String getNotDerivedDataSets(@QueryParam("callback") String callback) {
}
}

@GET
@Path("/availableFunctions/{dsId}")
@Produces(MediaType.APPLICATION_JSON + "; charset=UTF-8")
@UserConstraint(functionalities = { CommunityFunctionalityConstants.SELF_SERVICE_DATASET_MANAGEMENT })
public String availableFunctions(@PathParam("dsId") String datasetId, @QueryParam("useCache") boolean useCache)
throws JSONException, DataBaseException, EMFUserError, DataSourceException {
logger.debug("IN");

ISbiDataSetDAO dsDAO = DAOFactory.getSbiDataSetDAO();

JSONObject jo = new JSONObject();

DatasetFunctionsConfig datasetFunctionsConfig = new DatasetFunctionsConfig();

if (useCache) {
IDataSourceDAO dataSourceDAO = DAOFactory.getDataSourceDAO();
IDataSource dataSource = dataSourceDAO.loadDataSourceWriteDefault();

if (dataSource == null)
throw new DataSourceException("No data source found for cache");

String dataBaseDialect = dataSource.getDialectName();
List<String> availableFunctions = datasetFunctionsConfig.getAvailableFunctions(dataBaseDialect);
jo.put("availableFunctions", availableFunctions);

List<String> nullIfFunction = datasetFunctionsConfig.getNullifFunction(dataBaseDialect);
jo.put("nullifFunction", nullIfFunction);

} else {
Tenant tenantManager = TenantManager.getTenant();
SbiDataSet sbiDataSet = dsDAO.loadSbiDataSetByIdAndOrganiz(Integer.valueOf(datasetId),
tenantManager.getName());
IDataSet iDataSet = DataSetFactory.toDataSet(sbiDataSet);
IDataBase database = DataBaseFactory.getDataBase(iDataSet.getDataSource());
String dataBaseDialect = database.getDatabaseDialect().getValue();

List<String> availableFunctions = datasetFunctionsConfig.getAvailableFunctions(dataBaseDialect);
jo.put("availableFunctions", availableFunctions);

List<String> nullIfFunction = datasetFunctionsConfig.getNullifFunction(dataBaseDialect);
jo.put("nullifFunction", nullIfFunction);
}

logger.debug("OUT");
return jo.toString();
}

@GET
@Produces(MediaType.APPLICATION_JSON + "; charset=UTF-8")
@UserConstraint(functionalities = { CommunityFunctionalityConstants.SELF_SERVICE_DATASET_MANAGEMENT })
Expand Down

0 comments on commit 4c5dbce

Please sign in to comment.