chore: Moved export permission checks to respective permission components (#27948)
This commit is contained in:
parent
addc5e5174
commit
14a0ab7cab
|
|
@ -4,7 +4,6 @@ import com.appsmith.server.datasources.base.DatasourceService;
|
|||
import com.appsmith.server.datasourcestorages.base.DatasourceStorageService;
|
||||
import com.appsmith.server.newactions.base.NewActionService;
|
||||
import com.appsmith.server.repositories.ActionCollectionRepository;
|
||||
import com.appsmith.server.repositories.DatasourceRepository;
|
||||
import com.appsmith.server.repositories.NewActionRepository;
|
||||
import com.appsmith.server.repositories.NewPageRepository;
|
||||
import com.appsmith.server.repositories.PermissionGroupRepository;
|
||||
|
|
@ -36,7 +35,6 @@ public class ImportExportApplicationServiceImpl extends ImportExportApplicationS
|
|||
DatasourceService datasourceService,
|
||||
SessionUserService sessionUserService,
|
||||
NewActionRepository newActionRepository,
|
||||
DatasourceRepository datasourceRepository,
|
||||
PluginRepository pluginRepository,
|
||||
WorkspaceService workspaceService,
|
||||
ApplicationService applicationService,
|
||||
|
|
@ -64,7 +62,6 @@ public class ImportExportApplicationServiceImpl extends ImportExportApplicationS
|
|||
datasourceService,
|
||||
sessionUserService,
|
||||
newActionRepository,
|
||||
datasourceRepository,
|
||||
pluginRepository,
|
||||
workspaceService,
|
||||
applicationService,
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ package com.appsmith.server.solutions.ce;
|
|||
import com.appsmith.server.acl.AclPermission;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import static java.lang.Boolean.TRUE;
|
||||
|
||||
@Component
|
||||
public class ActionPermissionCEImpl implements ActionPermissionCE, DomainPermissionCE {
|
||||
@Override
|
||||
|
|
@ -15,6 +17,11 @@ public class ActionPermissionCEImpl implements ActionPermissionCE, DomainPermiss
|
|||
return AclPermission.READ_ACTIONS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AclPermission getExportPermission(boolean isGitSync, boolean exportWithConfiguration) {
|
||||
return isGitSync ? null : TRUE.equals(exportWithConfiguration) ? getReadPermission() : getEditPermission();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AclPermission getExecutePermission() {
|
||||
return AclPermission.EXECUTE_ACTIONS;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,11 @@ public class ApplicationPermissionCEImpl implements ApplicationPermissionCE, Dom
|
|||
return AclPermission.READ_APPLICATIONS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AclPermission getExportPermission(boolean isGitSync, boolean exportWithConfiguration) {
|
||||
return isGitSync ? getEditPermission() : getExportPermission();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AclPermission getExportPermission() {
|
||||
return AclPermission.EXPORT_APPLICATIONS;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ package com.appsmith.server.solutions.ce;
|
|||
import com.appsmith.server.acl.AclPermission;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import static java.lang.Boolean.TRUE;
|
||||
|
||||
@Component
|
||||
public class DatasourcePermissionCEImpl implements DatasourcePermissionCE, DomainPermissionCE {
|
||||
@Override
|
||||
|
|
@ -10,6 +12,11 @@ public class DatasourcePermissionCEImpl implements DatasourcePermissionCE, Domai
|
|||
return AclPermission.READ_DATASOURCES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AclPermission getExportPermission(boolean isGitSync, boolean exportWithConfiguration) {
|
||||
return isGitSync ? null : TRUE.equals(exportWithConfiguration) ? getReadPermission() : getEditPermission();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AclPermission getDeletePermission() {
|
||||
return AclPermission.MANAGE_DATASOURCES;
|
||||
|
|
|
|||
|
|
@ -16,4 +16,6 @@ public interface DomainPermissionCE {
|
|||
* @return The permission required to read the domain.
|
||||
*/
|
||||
AclPermission getReadPermission();
|
||||
|
||||
AclPermission getExportPermission(boolean isGitSync, boolean exportWithConfiguration);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ import com.appsmith.server.migrations.JsonSchemaMigration;
|
|||
import com.appsmith.server.migrations.JsonSchemaVersions;
|
||||
import com.appsmith.server.newactions.base.NewActionService;
|
||||
import com.appsmith.server.repositories.ActionCollectionRepository;
|
||||
import com.appsmith.server.repositories.DatasourceRepository;
|
||||
import com.appsmith.server.repositories.NewActionRepository;
|
||||
import com.appsmith.server.repositories.NewPageRepository;
|
||||
import com.appsmith.server.repositories.PermissionGroupRepository;
|
||||
|
|
@ -126,7 +125,6 @@ public class ImportExportApplicationServiceCEImpl implements ImportExportApplica
|
|||
private final DatasourceService datasourceService;
|
||||
private final SessionUserService sessionUserService;
|
||||
private final NewActionRepository newActionRepository;
|
||||
private final DatasourceRepository datasourceRepository;
|
||||
private final PluginRepository pluginRepository;
|
||||
private final WorkspaceService workspaceService;
|
||||
private final ApplicationService applicationService;
|
||||
|
|
@ -194,8 +192,7 @@ public class ImportExportApplicationServiceCEImpl implements ImportExportApplica
|
|||
AtomicReference<Boolean> exportWithConfiguration = new AtomicReference<>(false);
|
||||
|
||||
// If Git-sync, then use MANAGE_APPLICATIONS, else use EXPORT_APPLICATION permission to fetch application
|
||||
AclPermission permission =
|
||||
isGitSync ? applicationPermission.getEditPermission() : applicationPermission.getExportPermission();
|
||||
AclPermission permission = applicationPermission.getExportPermission(isGitSync, exportWithConfiguration.get());
|
||||
|
||||
Mono<User> currentUserMono = sessionUserService.getCurrentUser().cache();
|
||||
|
||||
|
|
@ -204,7 +201,8 @@ public class ImportExportApplicationServiceCEImpl implements ImportExportApplica
|
|||
applicationService
|
||||
.findById(applicationId, permission)
|
||||
// Find the application without permissions if it is a template application
|
||||
.switchIfEmpty(applicationService.findByIdAndExportWithConfiguration(applicationId, TRUE))
|
||||
.switchIfEmpty(Mono.defer(
|
||||
() -> applicationService.findByIdAndExportWithConfiguration(applicationId, TRUE)))
|
||||
.switchIfEmpty(Mono.error(new AppsmithException(
|
||||
AppsmithError.NO_RESOURCE_FOUND, FieldName.APPLICATION_ID, applicationId)))
|
||||
.map(application -> {
|
||||
|
|
@ -315,11 +313,8 @@ public class ImportExportApplicationServiceCEImpl implements ImportExportApplica
|
|||
applicationJson.setExportedApplication(application);
|
||||
Set<String> dbNamesUsedInActions = new HashSet<>();
|
||||
|
||||
Optional<AclPermission> optionalPermission = isGitSync
|
||||
? Optional.empty()
|
||||
: TRUE.equals(exportWithConfiguration.get())
|
||||
? Optional.of(pagePermission.getReadPermission())
|
||||
: Optional.of(pagePermission.getEditPermission());
|
||||
Optional<AclPermission> optionalPermission = Optional.ofNullable(
|
||||
pagePermission.getExportPermission(isGitSync, exportWithConfiguration.get()));
|
||||
Flux<NewPage> pageFlux = newPageRepository.findByApplicationId(applicationId, optionalPermission);
|
||||
|
||||
List<String> unPublishedPages = application.getPages().stream()
|
||||
|
|
@ -385,11 +380,9 @@ public class ImportExportApplicationServiceCEImpl implements ImportExportApplica
|
|||
}
|
||||
});
|
||||
|
||||
Optional<AclPermission> optionalPermission3 = isGitSync
|
||||
? Optional.empty()
|
||||
: TRUE.equals(exportWithConfiguration.get())
|
||||
? Optional.of(datasourcePermission.getReadPermission())
|
||||
: Optional.of(datasourcePermission.getEditPermission());
|
||||
Optional<AclPermission> optionalPermission3 =
|
||||
Optional.ofNullable(datasourcePermission.getExportPermission(
|
||||
isGitSync, exportWithConfiguration.get()));
|
||||
|
||||
Flux<Datasource> datasourceFlux = datasourceService.getAllByWorkspaceIdWithStorages(
|
||||
workspaceId, optionalPermission3);
|
||||
|
|
@ -423,11 +416,8 @@ public class ImportExportApplicationServiceCEImpl implements ImportExportApplica
|
|||
.collect(Collectors.toList());
|
||||
applicationJson.setDatasourceList(storageList);
|
||||
|
||||
Optional<AclPermission> optionalPermission1 = isGitSync
|
||||
? Optional.empty()
|
||||
: TRUE.equals(exportWithConfiguration.get())
|
||||
? Optional.of(actionPermission.getReadPermission())
|
||||
: Optional.of(actionPermission.getEditPermission());
|
||||
Optional<AclPermission> optionalPermission1 = Optional.ofNullable(
|
||||
actionPermission.getExportPermission(isGitSync, exportWithConfiguration.get()));
|
||||
Flux<ActionCollection> actionCollectionFlux =
|
||||
actionCollectionRepository.findByListOfPageIds(
|
||||
unPublishedPages, optionalPermission1);
|
||||
|
|
@ -510,11 +500,8 @@ public class ImportExportApplicationServiceCEImpl implements ImportExportApplica
|
|||
.getUpdatedResources()
|
||||
.put(FieldName.ACTION_COLLECTION_LIST, updatedActionCollectionSet);
|
||||
|
||||
Optional<AclPermission> optionalPermission2 = isGitSync
|
||||
? Optional.empty()
|
||||
: TRUE.equals(exportWithConfiguration.get())
|
||||
? Optional.of(actionPermission.getReadPermission())
|
||||
: Optional.of(actionPermission.getEditPermission());
|
||||
Optional<AclPermission> optionalPermission2 = Optional.ofNullable(
|
||||
actionPermission.getExportPermission(isGitSync, exportWithConfiguration.get()));
|
||||
|
||||
Flux<NewAction> actionFlux =
|
||||
newActionRepository.findByListOfPageIds(unPublishedPages, optionalPermission2);
|
||||
|
|
@ -2303,8 +2290,8 @@ public class ImportExportApplicationServiceCEImpl implements ImportExportApplica
|
|||
* This will check if the datasource is already present in the workspace and create a new one if unable to find one
|
||||
*
|
||||
* @param existingDatasources already present datasource in the workspace
|
||||
* @param datasourceStorage which will be checked against existing datasources
|
||||
* @param workspace workspace where duplicate datasource should be checked
|
||||
* @param datasourceStorage which will be checked against existing datasources
|
||||
* @param workspace workspace where duplicate datasource should be checked
|
||||
* @return already present or brand new datasource depending upon the equality check
|
||||
*/
|
||||
private Mono<Datasource> createUniqueDatasourceIfNotPresent(
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ package com.appsmith.server.solutions.ce;
|
|||
import com.appsmith.server.acl.AclPermission;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import static java.lang.Boolean.TRUE;
|
||||
|
||||
@Component
|
||||
public class PagePermissionCEImpl implements PagePermissionCE, DomainPermissionCE {
|
||||
@Override
|
||||
|
|
@ -15,6 +17,11 @@ public class PagePermissionCEImpl implements PagePermissionCE, DomainPermissionC
|
|||
return AclPermission.READ_PAGES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AclPermission getExportPermission(boolean isGitSync, boolean exportWithConfiguration) {
|
||||
return isGitSync ? null : TRUE.equals(exportWithConfiguration) ? getReadPermission() : getEditPermission();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AclPermission getDeletePermission() {
|
||||
return AclPermission.MANAGE_PAGES;
|
||||
|
|
|
|||
|
|
@ -27,4 +27,9 @@ public class PermissionGroupPermissionCEImpl implements PermissionGroupPermissio
|
|||
public AclPermission getReadPermission() {
|
||||
return AclPermission.READ_PERMISSION_GROUPS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AclPermission getExportPermission(boolean isGitSync, boolean exportWithConfiguration) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,11 @@ public class WorkspacePermissionCEImpl implements WorkspacePermissionCE, DomainP
|
|||
return AclPermission.READ_WORKSPACES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AclPermission getExportPermission(boolean isGitSync, boolean exportWithConfiguration) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AclPermission getDeletePermission() {
|
||||
return AclPermission.MANAGE_WORKSPACES;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user