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