fix: Using correct permissions on datasource and application during crud page instead of edit permissions (#26746)

CRUD Page generation used edit datasource and edit application
permissions till now. Updated the same to create page actions and create
pages permissions respectively to support custom role creation on BE.

Fixes #26738
This commit is contained in:
Trisha Anand 2023-08-30 09:27:50 +05:30 committed by GitHub
parent 32753c006a
commit 8014f0bc5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 2 deletions

View File

@ -226,7 +226,7 @@ public class CreateDBTablePageSolutionCEImpl implements CreateDBTablePageSolutio
Mono<NewPage> pageMono = getOrCreatePage(defaultApplicationId, defaultPageId, tableName, branchName);
Mono<DatasourceStorage> datasourceStorageMono = datasourceService
.findById(datasourceId, datasourcePermission.getEditPermission())
.findById(datasourceId, datasourcePermission.getActionCreatePermission())
.switchIfEmpty(Mono.error(
new AppsmithException(AppsmithError.ACL_NO_RESOURCE_FOUND, FieldName.DATASOURCE, datasourceId)))
.flatMap(datasource -> datasourceStorageService.findByDatasourceAndEnvironmentIdForExecution(
@ -495,7 +495,10 @@ public class CreateDBTablePageSolutionCEImpl implements CreateDBTablePageSolutio
}
return applicationService
.findBranchedApplicationId(branchName, defaultApplicationId, applicationPermission.getEditPermission())
.findBranchedApplicationId(
branchName, defaultApplicationId, applicationPermission.getPageCreatePermission())
.switchIfEmpty(Mono.error(new AppsmithException(
AppsmithError.NO_RESOURCE_FOUND, FieldName.APPLICATION, defaultApplicationId)))
.flatMapMany(childApplicationId -> newPageService.findByApplicationId(
childApplicationId, pagePermission.getEditPermission(), false))
.collectList()

View File

@ -6,4 +6,6 @@ public interface DatasourcePermissionCE {
AclPermission getDeletePermission();
AclPermission getExecutePermission();
AclPermission getActionCreatePermission();
}

View File

@ -22,4 +22,9 @@ public class DatasourcePermissionCEImpl implements DatasourcePermissionCE, Domai
public AclPermission getExecutePermission() {
return AclPermission.EXECUTE_DATASOURCES;
}
@Override
public AclPermission getActionCreatePermission() {
return AclPermission.MANAGE_DATASOURCES;
}
}