diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractDistributionSetDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractDistributionSetDetails.java index 2dee9c11d..7abaecc40 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractDistributionSetDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractDistributionSetDetails.java @@ -14,6 +14,7 @@ import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.DistributionSetTagManagement; import org.eclipse.hawkbit.repository.TenantConfigurationManagement; import org.eclipse.hawkbit.repository.model.DistributionSet; +import org.eclipse.hawkbit.security.SystemSecurityContext; import org.eclipse.hawkbit.tenancy.configuration.TenantConfigurationProperties.TenantConfigurationKey; import org.eclipse.hawkbit.ui.SpPermissionChecker; import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken; @@ -44,21 +45,16 @@ public abstract class AbstractDistributionSetDetails private static final long serialVersionUID = 1L; - private final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout; - - private final DistributionSetMetadataDetailsLayout dsMetadataTable; - - private final UINotification uiNotification; - private final transient DistributionSetManagement distributionSetManagement; - - private final DsMetadataPopupLayout dsMetadataPopupLayout; - - private final DistributionTagToken distributionTagToken; - - private final SoftwareModuleDetailsTable softwareModuleDetailsTable; - private final transient TenantConfigurationManagement tenantConfigurationManagement; + private final transient SystemSecurityContext systemSecurityContext; + + private final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout; + private final DistributionSetMetadataDetailsLayout dsMetadataTable; + private final UINotification uiNotification; + private final DsMetadataPopupLayout dsMetadataPopupLayout; + private final DistributionTagToken distributionTagToken; + private final SoftwareModuleDetailsTable softwareModuleDetailsTable; private VerticalLayout softwareModuleTab; @@ -69,7 +65,8 @@ public abstract class AbstractDistributionSetDetails final DsMetadataPopupLayout dsMetadataPopupLayout, final UINotification uiNotification, final DistributionSetTagManagement distributionSetTagManagement, final SoftwareModuleDetailsTable softwareModuleDetailsTable, - final TenantConfigurationManagement tenantConfigurationManagement) { + final TenantConfigurationManagement tenantConfigurationManagement, + final SystemSecurityContext systemSecurityContext) { super(i18n, eventBus, permissionChecker, managementUIState); this.distributionAddUpdateWindowLayout = distributionAddUpdateWindowLayout; this.uiNotification = uiNotification; @@ -79,6 +76,7 @@ public abstract class AbstractDistributionSetDetails managementUIState, distributionSetTagManagement, distributionSetManagement); this.softwareModuleDetailsTable = softwareModuleDetailsTable; this.tenantConfigurationManagement = tenantConfigurationManagement; + this.systemSecurityContext = systemSecurityContext; dsMetadataTable = new DistributionSetMetadataDetailsLayout(i18n, distributionSetManagement, dsMetadataPopupLayout); @@ -192,8 +190,8 @@ public abstract class AbstractDistributionSetDetails } private boolean isMultiAssignmentEnabled() { - return tenantConfigurationManagement - .getConfigurationValue(TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED, Boolean.class).getValue(); + return systemSecurityContext.runAsSystem(() -> tenantConfigurationManagement + .getConfigurationValue(TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED, Boolean.class).getValue()); } private String getMigrationRequiredValue(final Boolean isMigrationRequired) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/DistributionsView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/DistributionsView.java index 45509c96e..0564061ad 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/DistributionsView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/DistributionsView.java @@ -22,6 +22,7 @@ import org.eclipse.hawkbit.repository.SoftwareModuleTypeManagement; import org.eclipse.hawkbit.repository.SystemManagement; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.TenantConfigurationManagement; +import org.eclipse.hawkbit.security.SystemSecurityContext; import org.eclipse.hawkbit.ui.AbstractHawkbitUI; import org.eclipse.hawkbit.ui.SpPermissionChecker; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; @@ -104,7 +105,7 @@ public class DistributionsView extends AbstractNotificationView implements Brows final ArtifactUploadState artifactUploadState, final SystemManagement systemManagement, final ArtifactManagement artifactManagement, final NotificationUnreadButton notificationUnreadButton, final DistributionsViewMenuItem distributionsViewMenuItem, - final TenantConfigurationManagement configManagement) { + final TenantConfigurationManagement configManagement, final SystemSecurityContext systemSecurityContext) { super(eventBus, notificationUnreadButton); this.permChecker = permChecker; this.i18n = i18n; @@ -119,7 +120,7 @@ public class DistributionsView extends AbstractNotificationView implements Brows this.distributionTableLayout = new DistributionSetTableLayout(i18n, eventBus, permChecker, manageDistUIState, softwareModuleManagement, distributionSetManagement, distributionSetTypeManagement, targetManagement, entityFactory, uiNotification, distributionSetTagManagement, distributionsViewClientCriterion, - systemManagement, configManagement); + systemManagement, configManagement, systemSecurityContext); this.softwareModuleTableLayout = new SwModuleTableLayout(i18n, uiNotification, eventBus, softwareModuleManagement, softwareModuleTypeManagement, entityFactory, manageDistUIState, permChecker, distributionsViewClientCriterion, artifactUploadState, artifactManagement); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java index ff5427d2a..ca8aa2efd 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java @@ -15,6 +15,7 @@ import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.DistributionSetTagManagement; import org.eclipse.hawkbit.repository.TenantConfigurationManagement; import org.eclipse.hawkbit.repository.model.SoftwareModule; +import org.eclipse.hawkbit.security.SystemSecurityContext; import org.eclipse.hawkbit.ui.SpPermissionChecker; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType; @@ -59,12 +60,13 @@ public class DistributionSetDetails extends AbstractDistributionSetDetails { final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout, final DistributionSetManagement distributionSetManagement, final UINotification uiNotification, final DistributionSetTagManagement distributionSetTagManagement, - final DsMetadataPopupLayout dsMetadataPopupLayout, final TenantConfigurationManagement configManagement) { + final DsMetadataPopupLayout dsMetadataPopupLayout, final TenantConfigurationManagement configManagement, + final SystemSecurityContext systemSecurityContext) { super(i18n, eventBus, permissionChecker, managementUIState, distributionAddUpdateWindowLayout, distributionSetManagement, dsMetadataPopupLayout, uiNotification, distributionSetTagManagement, createSoftwareModuleDetailsTable(i18n, permissionChecker, distributionSetManagement, eventBus, manageDistUIState, uiNotification), - configManagement); + configManagement, systemSecurityContext); this.manageDistUIState = manageDistUIState; tfqDetailsTable = new TargetFilterQueryDetailsTable(i18n); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableLayout.java index e6fa68df1..3ee0a78f1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableLayout.java @@ -16,6 +16,7 @@ import org.eclipse.hawkbit.repository.SoftwareModuleManagement; import org.eclipse.hawkbit.repository.SystemManagement; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.TenantConfigurationManagement; +import org.eclipse.hawkbit.security.SystemSecurityContext; import org.eclipse.hawkbit.ui.SpPermissionChecker; import org.eclipse.hawkbit.ui.common.table.AbstractTableLayout; import org.eclipse.hawkbit.ui.dd.criteria.DistributionsViewClientCriterion; @@ -42,7 +43,8 @@ public class DistributionSetTableLayout extends AbstractTableLayout tenantConfigurationManagement + .getConfigurationValue(TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED, Boolean.class).getValue()); } private void populateValuesOfDistribution(final Long editDistId) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java index a745b34d9..15d93d196 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java @@ -11,6 +11,7 @@ package org.eclipse.hawkbit.ui.management.dstable; import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.DistributionSetTagManagement; import org.eclipse.hawkbit.repository.TenantConfigurationManagement; +import org.eclipse.hawkbit.security.SystemSecurityContext; import org.eclipse.hawkbit.ui.SpPermissionChecker; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractDistributionSetDetails; import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable; @@ -33,11 +34,12 @@ public class DistributionDetails extends AbstractDistributionSetDetails { final DsMetadataPopupLayout dsMetadataPopupLayout, final UINotification uiNotification, final DistributionSetTagManagement distributionSetTagManagement, final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout, - final TenantConfigurationManagement tenantConfigurationManagement) { + final TenantConfigurationManagement tenantConfigurationManagement, + final SystemSecurityContext systemSecurityContext) { super(i18n, eventBus, permissionChecker, managementUIState, distributionAddUpdateWindowLayout, distributionSetManagement, dsMetadataPopupLayout, uiNotification, distributionSetTagManagement, createSoftwareModuleDetailsTable(i18n, permissionChecker, uiNotification), - tenantConfigurationManagement); + tenantConfigurationManagement, systemSecurityContext); restoreState(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableLayout.java index d3645d67f..1b0aa1c8f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableLayout.java @@ -17,6 +17,7 @@ import org.eclipse.hawkbit.repository.SystemManagement; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.TargetTagManagement; import org.eclipse.hawkbit.repository.TenantConfigurationManagement; +import org.eclipse.hawkbit.security.SystemSecurityContext; import org.eclipse.hawkbit.ui.SpPermissionChecker; import org.eclipse.hawkbit.ui.UiProperties; import org.eclipse.hawkbit.ui.common.table.AbstractTableLayout; @@ -44,11 +45,12 @@ public class DistributionTableLayout extends AbstractTableLayout { private static final long serialVersionUID = 1L; - private static final Logger LOG = LoggerFactory.getLogger(TargetTable.class); - private static final String TARGET_PINNED = "targetPinned"; - private static final int PROPERTY_DEPT = 3; - private static final String MESSAGE_ASSIGN_TARGET_TO_MULTIPLE_DISTRIBUTIONS = "message.confirm.assign.multiple.entities.multiple.distributions"; private final transient TargetManagement targetManagement; - private final transient DistributionSetManagement distributionSetManagement; - private final transient TargetTagManagement tagManagement; - private final transient DeploymentManagement deploymentManagement; - private final transient TenantConfigurationManagement configManagement; + private final transient SystemSecurityContext systemSecurityContext; private final ManagementViewClientCriterion managementViewClientCriterion; - private final ManagementUIState managementUIState; + private final UiProperties uiProperties; + private final ActionTypeOptionGroupAssignmentLayout actionTypeOptionGroupLayout; + private final MaintenanceWindowLayout maintenanceWindowLayout; private Button targetPinnedBtn; - private boolean targetPinned; - - private final UiProperties uiProperties; - private ConfirmationDialog confirmDialog; - private final ActionTypeOptionGroupAssignmentLayout actionTypeOptionGroupLayout; - - private final MaintenanceWindowLayout maintenanceWindowLayout; - public TargetTable(final UIEventBus eventBus, final VaadinMessageSource i18n, final UINotification notification, final TargetManagement targetManagement, final ManagementUIState managementUIState, final SpPermissionChecker permChecker, final ManagementViewClientCriterion managementViewClientCriterion, final DistributionSetManagement distributionSetManagement, final TargetTagManagement tagManagement, final DeploymentManagement deploymentManagement, final TenantConfigurationManagement configManagement, - final UiProperties uiProperties) { + final SystemSecurityContext systemSecurityContext, final UiProperties uiProperties) { super(eventBus, i18n, notification, permChecker); this.targetManagement = targetManagement; this.managementViewClientCriterion = managementViewClientCriterion; @@ -162,6 +150,7 @@ public class TargetTable extends AbstractTable { this.uiProperties = uiProperties; this.actionTypeOptionGroupLayout = new ActionTypeOptionGroupAssignmentLayout(i18n); this.maintenanceWindowLayout = new MaintenanceWindowLayout(i18n); + this.systemSecurityContext = systemSecurityContext; setItemDescriptionGenerator(new AssignInstalledDSTooltipGenerator()); addNewContainerDS(); @@ -892,7 +881,7 @@ public class TargetTable extends AbstractTable { if (ids.isEmpty()) { return Collections.emptySet(); } - if (isMultiAssignmentsEnabled()) { + if (isMultiAssignmentEnabled()) { return new HashSet<>(ids); } return Collections.singleton(ids.iterator().next()); @@ -982,11 +971,9 @@ public class TargetTable extends AbstractTable { return ""; } - private boolean isMultiAssignmentsEnabled() { - return configManagement - .getConfigurationValue(TenantConfigurationProperties.TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED, - Boolean.class) - .getValue(); + private boolean isMultiAssignmentEnabled() { + return systemSecurityContext.runAsSystem(() -> configManagement + .getConfigurationValue(TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED, Boolean.class).getValue()); } } \ No newline at end of file