Deployment View broken with Access Denied error (#841)
* Use SystemSecurityContext:runAsSystem to fix AccessDeniedException Signed-off-by: Stefan Behl <stefan.behl@bosch-si.com>
This commit is contained in:
committed by
Jeroen Laverman
parent
1ac40a7a95
commit
b50515367e
@@ -14,6 +14,7 @@ import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
|||||||
import org.eclipse.hawkbit.repository.DistributionSetTagManagement;
|
import org.eclipse.hawkbit.repository.DistributionSetTagManagement;
|
||||||
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
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.tenancy.configuration.TenantConfigurationProperties.TenantConfigurationKey;
|
||||||
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
||||||
import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken;
|
import org.eclipse.hawkbit.ui.common.tagdetails.DistributionTagToken;
|
||||||
@@ -44,21 +45,16 @@ public abstract class AbstractDistributionSetDetails
|
|||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
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 transient DistributionSetManagement distributionSetManagement;
|
||||||
|
|
||||||
private final DsMetadataPopupLayout dsMetadataPopupLayout;
|
|
||||||
|
|
||||||
private final DistributionTagToken distributionTagToken;
|
|
||||||
|
|
||||||
private final SoftwareModuleDetailsTable softwareModuleDetailsTable;
|
|
||||||
|
|
||||||
private final transient TenantConfigurationManagement tenantConfigurationManagement;
|
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;
|
private VerticalLayout softwareModuleTab;
|
||||||
|
|
||||||
@@ -69,7 +65,8 @@ public abstract class AbstractDistributionSetDetails
|
|||||||
final DsMetadataPopupLayout dsMetadataPopupLayout, final UINotification uiNotification,
|
final DsMetadataPopupLayout dsMetadataPopupLayout, final UINotification uiNotification,
|
||||||
final DistributionSetTagManagement distributionSetTagManagement,
|
final DistributionSetTagManagement distributionSetTagManagement,
|
||||||
final SoftwareModuleDetailsTable softwareModuleDetailsTable,
|
final SoftwareModuleDetailsTable softwareModuleDetailsTable,
|
||||||
final TenantConfigurationManagement tenantConfigurationManagement) {
|
final TenantConfigurationManagement tenantConfigurationManagement,
|
||||||
|
final SystemSecurityContext systemSecurityContext) {
|
||||||
super(i18n, eventBus, permissionChecker, managementUIState);
|
super(i18n, eventBus, permissionChecker, managementUIState);
|
||||||
this.distributionAddUpdateWindowLayout = distributionAddUpdateWindowLayout;
|
this.distributionAddUpdateWindowLayout = distributionAddUpdateWindowLayout;
|
||||||
this.uiNotification = uiNotification;
|
this.uiNotification = uiNotification;
|
||||||
@@ -79,6 +76,7 @@ public abstract class AbstractDistributionSetDetails
|
|||||||
managementUIState, distributionSetTagManagement, distributionSetManagement);
|
managementUIState, distributionSetTagManagement, distributionSetManagement);
|
||||||
this.softwareModuleDetailsTable = softwareModuleDetailsTable;
|
this.softwareModuleDetailsTable = softwareModuleDetailsTable;
|
||||||
this.tenantConfigurationManagement = tenantConfigurationManagement;
|
this.tenantConfigurationManagement = tenantConfigurationManagement;
|
||||||
|
this.systemSecurityContext = systemSecurityContext;
|
||||||
|
|
||||||
dsMetadataTable = new DistributionSetMetadataDetailsLayout(i18n, distributionSetManagement,
|
dsMetadataTable = new DistributionSetMetadataDetailsLayout(i18n, distributionSetManagement,
|
||||||
dsMetadataPopupLayout);
|
dsMetadataPopupLayout);
|
||||||
@@ -192,8 +190,8 @@ public abstract class AbstractDistributionSetDetails
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isMultiAssignmentEnabled() {
|
private boolean isMultiAssignmentEnabled() {
|
||||||
return tenantConfigurationManagement
|
return systemSecurityContext.runAsSystem(() -> tenantConfigurationManagement
|
||||||
.getConfigurationValue(TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED, Boolean.class).getValue();
|
.getConfigurationValue(TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED, Boolean.class).getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getMigrationRequiredValue(final Boolean isMigrationRequired) {
|
private String getMigrationRequiredValue(final Boolean isMigrationRequired) {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import org.eclipse.hawkbit.repository.SoftwareModuleTypeManagement;
|
|||||||
import org.eclipse.hawkbit.repository.SystemManagement;
|
import org.eclipse.hawkbit.repository.SystemManagement;
|
||||||
import org.eclipse.hawkbit.repository.TargetManagement;
|
import org.eclipse.hawkbit.repository.TargetManagement;
|
||||||
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
||||||
|
import org.eclipse.hawkbit.security.SystemSecurityContext;
|
||||||
import org.eclipse.hawkbit.ui.AbstractHawkbitUI;
|
import org.eclipse.hawkbit.ui.AbstractHawkbitUI;
|
||||||
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
||||||
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
|
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 ArtifactUploadState artifactUploadState, final SystemManagement systemManagement,
|
||||||
final ArtifactManagement artifactManagement, final NotificationUnreadButton notificationUnreadButton,
|
final ArtifactManagement artifactManagement, final NotificationUnreadButton notificationUnreadButton,
|
||||||
final DistributionsViewMenuItem distributionsViewMenuItem,
|
final DistributionsViewMenuItem distributionsViewMenuItem,
|
||||||
final TenantConfigurationManagement configManagement) {
|
final TenantConfigurationManagement configManagement, final SystemSecurityContext systemSecurityContext) {
|
||||||
super(eventBus, notificationUnreadButton);
|
super(eventBus, notificationUnreadButton);
|
||||||
this.permChecker = permChecker;
|
this.permChecker = permChecker;
|
||||||
this.i18n = i18n;
|
this.i18n = i18n;
|
||||||
@@ -119,7 +120,7 @@ public class DistributionsView extends AbstractNotificationView implements Brows
|
|||||||
this.distributionTableLayout = new DistributionSetTableLayout(i18n, eventBus, permChecker, manageDistUIState,
|
this.distributionTableLayout = new DistributionSetTableLayout(i18n, eventBus, permChecker, manageDistUIState,
|
||||||
softwareModuleManagement, distributionSetManagement, distributionSetTypeManagement, targetManagement,
|
softwareModuleManagement, distributionSetManagement, distributionSetTypeManagement, targetManagement,
|
||||||
entityFactory, uiNotification, distributionSetTagManagement, distributionsViewClientCriterion,
|
entityFactory, uiNotification, distributionSetTagManagement, distributionsViewClientCriterion,
|
||||||
systemManagement, configManagement);
|
systemManagement, configManagement, systemSecurityContext);
|
||||||
this.softwareModuleTableLayout = new SwModuleTableLayout(i18n, uiNotification, eventBus,
|
this.softwareModuleTableLayout = new SwModuleTableLayout(i18n, uiNotification, eventBus,
|
||||||
softwareModuleManagement, softwareModuleTypeManagement, entityFactory, manageDistUIState, permChecker,
|
softwareModuleManagement, softwareModuleTypeManagement, entityFactory, manageDistUIState, permChecker,
|
||||||
distributionsViewClientCriterion, artifactUploadState, artifactManagement);
|
distributionsViewClientCriterion, artifactUploadState, artifactManagement);
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
|||||||
import org.eclipse.hawkbit.repository.DistributionSetTagManagement;
|
import org.eclipse.hawkbit.repository.DistributionSetTagManagement;
|
||||||
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
||||||
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
import org.eclipse.hawkbit.repository.model.SoftwareModule;
|
||||||
|
import org.eclipse.hawkbit.security.SystemSecurityContext;
|
||||||
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
||||||
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
|
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent;
|
||||||
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType;
|
import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType;
|
||||||
@@ -59,12 +60,13 @@ public class DistributionSetDetails extends AbstractDistributionSetDetails {
|
|||||||
final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout,
|
final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout,
|
||||||
final DistributionSetManagement distributionSetManagement, final UINotification uiNotification,
|
final DistributionSetManagement distributionSetManagement, final UINotification uiNotification,
|
||||||
final DistributionSetTagManagement distributionSetTagManagement,
|
final DistributionSetTagManagement distributionSetTagManagement,
|
||||||
final DsMetadataPopupLayout dsMetadataPopupLayout, final TenantConfigurationManagement configManagement) {
|
final DsMetadataPopupLayout dsMetadataPopupLayout, final TenantConfigurationManagement configManagement,
|
||||||
|
final SystemSecurityContext systemSecurityContext) {
|
||||||
super(i18n, eventBus, permissionChecker, managementUIState, distributionAddUpdateWindowLayout,
|
super(i18n, eventBus, permissionChecker, managementUIState, distributionAddUpdateWindowLayout,
|
||||||
distributionSetManagement, dsMetadataPopupLayout, uiNotification, distributionSetTagManagement,
|
distributionSetManagement, dsMetadataPopupLayout, uiNotification, distributionSetTagManagement,
|
||||||
createSoftwareModuleDetailsTable(i18n, permissionChecker, distributionSetManagement, eventBus,
|
createSoftwareModuleDetailsTable(i18n, permissionChecker, distributionSetManagement, eventBus,
|
||||||
manageDistUIState, uiNotification),
|
manageDistUIState, uiNotification),
|
||||||
configManagement);
|
configManagement, systemSecurityContext);
|
||||||
this.manageDistUIState = manageDistUIState;
|
this.manageDistUIState = manageDistUIState;
|
||||||
|
|
||||||
tfqDetailsTable = new TargetFilterQueryDetailsTable(i18n);
|
tfqDetailsTable = new TargetFilterQueryDetailsTable(i18n);
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import org.eclipse.hawkbit.repository.SoftwareModuleManagement;
|
|||||||
import org.eclipse.hawkbit.repository.SystemManagement;
|
import org.eclipse.hawkbit.repository.SystemManagement;
|
||||||
import org.eclipse.hawkbit.repository.TargetManagement;
|
import org.eclipse.hawkbit.repository.TargetManagement;
|
||||||
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
||||||
|
import org.eclipse.hawkbit.security.SystemSecurityContext;
|
||||||
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
||||||
import org.eclipse.hawkbit.ui.common.table.AbstractTableLayout;
|
import org.eclipse.hawkbit.ui.common.table.AbstractTableLayout;
|
||||||
import org.eclipse.hawkbit.ui.dd.criteria.DistributionsViewClientCriterion;
|
import org.eclipse.hawkbit.ui.dd.criteria.DistributionsViewClientCriterion;
|
||||||
@@ -42,7 +43,8 @@ public class DistributionSetTableLayout extends AbstractTableLayout<Distribution
|
|||||||
final EntityFactory entityFactory, final UINotification uiNotification,
|
final EntityFactory entityFactory, final UINotification uiNotification,
|
||||||
final DistributionSetTagManagement distributionSetTagManagement,
|
final DistributionSetTagManagement distributionSetTagManagement,
|
||||||
final DistributionsViewClientCriterion distributionsViewClientCriterion,
|
final DistributionsViewClientCriterion distributionsViewClientCriterion,
|
||||||
final SystemManagement systemManagement, final TenantConfigurationManagement configManagement) {
|
final SystemManagement systemManagement, final TenantConfigurationManagement configManagement,
|
||||||
|
final SystemSecurityContext systemSecurityContext) {
|
||||||
|
|
||||||
this.distributionSetTable = new DistributionSetTable(eventBus, i18n, uiNotification, permissionChecker,
|
this.distributionSetTable = new DistributionSetTable(eventBus, i18n, uiNotification, permissionChecker,
|
||||||
manageDistUIState, distributionSetManagement, softwareManagement, distributionsViewClientCriterion,
|
manageDistUIState, distributionSetManagement, softwareManagement, distributionsViewClientCriterion,
|
||||||
@@ -50,7 +52,7 @@ public class DistributionSetTableLayout extends AbstractTableLayout<Distribution
|
|||||||
|
|
||||||
final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout = new DistributionAddUpdateWindowLayout(
|
final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout = new DistributionAddUpdateWindowLayout(
|
||||||
i18n, uiNotification, eventBus, distributionSetManagement, distributionSetTypeManagement,
|
i18n, uiNotification, eventBus, distributionSetManagement, distributionSetTypeManagement,
|
||||||
systemManagement, entityFactory, distributionSetTable, configManagement);
|
systemManagement, entityFactory, distributionSetTable, configManagement, systemSecurityContext);
|
||||||
|
|
||||||
final DsMetadataPopupLayout popupLayout = new DsMetadataPopupLayout(i18n, uiNotification, eventBus,
|
final DsMetadataPopupLayout popupLayout = new DsMetadataPopupLayout(i18n, uiNotification, eventBus,
|
||||||
distributionSetManagement, entityFactory, permissionChecker);
|
distributionSetManagement, entityFactory, permissionChecker);
|
||||||
@@ -61,7 +63,7 @@ public class DistributionSetTableLayout extends AbstractTableLayout<Distribution
|
|||||||
distributionSetTable,
|
distributionSetTable,
|
||||||
new DistributionSetDetails(i18n, eventBus, permissionChecker, manageDistUIState, null,
|
new DistributionSetDetails(i18n, eventBus, permissionChecker, manageDistUIState, null,
|
||||||
distributionAddUpdateWindowLayout, distributionSetManagement, uiNotification,
|
distributionAddUpdateWindowLayout, distributionSetManagement, uiNotification,
|
||||||
distributionSetTagManagement, popupLayout, configManagement));
|
distributionSetTagManagement, popupLayout, configManagement, systemSecurityContext));
|
||||||
}
|
}
|
||||||
|
|
||||||
public DistributionSetTable getDistributionSetTable() {
|
public DistributionSetTable getDistributionSetTable() {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
|
|||||||
import org.eclipse.hawkbit.repository.TargetManagement;
|
import org.eclipse.hawkbit.repository.TargetManagement;
|
||||||
import org.eclipse.hawkbit.repository.TargetTagManagement;
|
import org.eclipse.hawkbit.repository.TargetTagManagement;
|
||||||
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
||||||
|
import org.eclipse.hawkbit.security.SystemSecurityContext;
|
||||||
import org.eclipse.hawkbit.ui.AbstractHawkbitUI;
|
import org.eclipse.hawkbit.ui.AbstractHawkbitUI;
|
||||||
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
||||||
import org.eclipse.hawkbit.ui.UiProperties;
|
import org.eclipse.hawkbit.ui.UiProperties;
|
||||||
@@ -128,7 +129,7 @@ public class DeploymentView extends AbstractNotificationView implements BrowserW
|
|||||||
final TargetTagManagement targetTagManagement,
|
final TargetTagManagement targetTagManagement,
|
||||||
final DistributionSetTagManagement distributionSetTagManagement,
|
final DistributionSetTagManagement distributionSetTagManagement,
|
||||||
final TargetFilterQueryManagement targetFilterQueryManagement, final SystemManagement systemManagement,
|
final TargetFilterQueryManagement targetFilterQueryManagement, final SystemManagement systemManagement,
|
||||||
final TenantConfigurationManagement configManagement,
|
final TenantConfigurationManagement configManagement, final SystemSecurityContext systemSecurityContext,
|
||||||
final NotificationUnreadButton notificationUnreadButton,
|
final NotificationUnreadButton notificationUnreadButton,
|
||||||
final DeploymentViewMenuItem deploymentViewMenuItem, @Qualifier("uiExecutor") final Executor uiExecutor) {
|
final DeploymentViewMenuItem deploymentViewMenuItem, @Qualifier("uiExecutor") final Executor uiExecutor) {
|
||||||
super(eventBus, notificationUnreadButton);
|
super(eventBus, notificationUnreadButton);
|
||||||
@@ -149,7 +150,7 @@ public class DeploymentView extends AbstractNotificationView implements BrowserW
|
|||||||
targetFilterQueryManagement, targetTagManagement);
|
targetFilterQueryManagement, targetTagManagement);
|
||||||
final TargetTable targetTable = new TargetTable(eventBus, i18n, uiNotification, targetManagement,
|
final TargetTable targetTable = new TargetTable(eventBus, i18n, uiNotification, targetManagement,
|
||||||
managementUIState, permChecker, managementViewClientCriterion, distributionSetManagement,
|
managementUIState, permChecker, managementViewClientCriterion, distributionSetManagement,
|
||||||
targetTagManagement, deploymentManagement, configManagement, uiProperties);
|
targetTagManagement, deploymentManagement, configManagement, systemSecurityContext, uiProperties);
|
||||||
this.countMessageLabel = new CountMessageLabel(eventBus, targetManagement, i18n, managementUIState,
|
this.countMessageLabel = new CountMessageLabel(eventBus, targetManagement, i18n, managementUIState,
|
||||||
targetTable);
|
targetTable);
|
||||||
|
|
||||||
@@ -177,7 +178,7 @@ public class DeploymentView extends AbstractNotificationView implements BrowserW
|
|||||||
this.distributionTableLayout = new DistributionTableLayout(i18n, eventBus, permChecker, managementUIState,
|
this.distributionTableLayout = new DistributionTableLayout(i18n, eventBus, permChecker, managementUIState,
|
||||||
distributionSetManagement, distributionSetTypeManagement, managementViewClientCriterion,
|
distributionSetManagement, distributionSetTypeManagement, managementViewClientCriterion,
|
||||||
entityFactory, uiNotification, distributionSetTagManagement, targetTagManagement, systemManagement,
|
entityFactory, uiNotification, distributionSetTagManagement, targetTagManagement, systemManagement,
|
||||||
targetManagement, deploymentManagement, configManagement, uiProperties);
|
targetManagement, deploymentManagement, configManagement, systemSecurityContext, uiProperties);
|
||||||
} else {
|
} else {
|
||||||
this.distributionTagLayout = null;
|
this.distributionTagLayout = null;
|
||||||
this.distributionTableLayout = null;
|
this.distributionTableLayout = null;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.eclipse.hawkbit.repository.exception.EntityNotFoundException;
|
|||||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSetType;
|
import org.eclipse.hawkbit.repository.model.DistributionSetType;
|
||||||
import org.eclipse.hawkbit.repository.model.TenantMetaData;
|
import org.eclipse.hawkbit.repository.model.TenantMetaData;
|
||||||
|
import org.eclipse.hawkbit.security.SystemSecurityContext;
|
||||||
import org.eclipse.hawkbit.tenancy.configuration.TenantConfigurationProperties.TenantConfigurationKey;
|
import org.eclipse.hawkbit.tenancy.configuration.TenantConfigurationProperties.TenantConfigurationKey;
|
||||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
import org.eclipse.hawkbit.ui.common.CommonDialogWindow;
|
||||||
import org.eclipse.hawkbit.ui.common.CommonDialogWindow.SaveDialogCloseListener;
|
import org.eclipse.hawkbit.ui.common.CommonDialogWindow.SaveDialogCloseListener;
|
||||||
@@ -67,6 +68,7 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
|||||||
private final transient SystemManagement systemManagement;
|
private final transient SystemManagement systemManagement;
|
||||||
private final transient EntityFactory entityFactory;
|
private final transient EntityFactory entityFactory;
|
||||||
private final transient TenantConfigurationManagement tenantConfigurationManagement;
|
private final transient TenantConfigurationManagement tenantConfigurationManagement;
|
||||||
|
private final transient SystemSecurityContext systemSecurityContext;
|
||||||
|
|
||||||
private final DistributionSetTable distributionSetTable;
|
private final DistributionSetTable distributionSetTable;
|
||||||
|
|
||||||
@@ -104,7 +106,8 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
|||||||
final UIEventBus eventBus, final DistributionSetManagement distributionSetManagement,
|
final UIEventBus eventBus, final DistributionSetManagement distributionSetManagement,
|
||||||
final DistributionSetTypeManagement distributionSetTypeManagement, final SystemManagement systemManagement,
|
final DistributionSetTypeManagement distributionSetTypeManagement, final SystemManagement systemManagement,
|
||||||
final EntityFactory entityFactory, final DistributionSetTable distributionSetTable,
|
final EntityFactory entityFactory, final DistributionSetTable distributionSetTable,
|
||||||
final TenantConfigurationManagement tenantConfigurationManagement) {
|
final TenantConfigurationManagement tenantConfigurationManagement,
|
||||||
|
final SystemSecurityContext systemSecurityContext) {
|
||||||
this.i18n = i18n;
|
this.i18n = i18n;
|
||||||
this.notificationMessage = notificationMessage;
|
this.notificationMessage = notificationMessage;
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
@@ -114,6 +117,7 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
|||||||
this.entityFactory = entityFactory;
|
this.entityFactory = entityFactory;
|
||||||
this.distributionSetTable = distributionSetTable;
|
this.distributionSetTable = distributionSetTable;
|
||||||
this.tenantConfigurationManagement = tenantConfigurationManagement;
|
this.tenantConfigurationManagement = tenantConfigurationManagement;
|
||||||
|
this.systemSecurityContext = systemSecurityContext;
|
||||||
createRequiredComponents();
|
createRequiredComponents();
|
||||||
buildLayout();
|
buildLayout();
|
||||||
}
|
}
|
||||||
@@ -294,8 +298,8 @@ public class DistributionAddUpdateWindowLayout extends CustomComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean isMultiAssignmentEnabled() {
|
private boolean isMultiAssignmentEnabled() {
|
||||||
return tenantConfigurationManagement.getConfigurationValue(TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED,
|
return systemSecurityContext.runAsSystem(() -> tenantConfigurationManagement
|
||||||
Boolean.class).getValue();
|
.getConfigurationValue(TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED, Boolean.class).getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void populateValuesOfDistribution(final Long editDistId) {
|
private void populateValuesOfDistribution(final Long editDistId) {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ package org.eclipse.hawkbit.ui.management.dstable;
|
|||||||
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
import org.eclipse.hawkbit.repository.DistributionSetManagement;
|
||||||
import org.eclipse.hawkbit.repository.DistributionSetTagManagement;
|
import org.eclipse.hawkbit.repository.DistributionSetTagManagement;
|
||||||
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
||||||
|
import org.eclipse.hawkbit.security.SystemSecurityContext;
|
||||||
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
||||||
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractDistributionSetDetails;
|
import org.eclipse.hawkbit.ui.common.detailslayout.AbstractDistributionSetDetails;
|
||||||
import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable;
|
import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable;
|
||||||
@@ -33,11 +34,12 @@ public class DistributionDetails extends AbstractDistributionSetDetails {
|
|||||||
final DsMetadataPopupLayout dsMetadataPopupLayout, final UINotification uiNotification,
|
final DsMetadataPopupLayout dsMetadataPopupLayout, final UINotification uiNotification,
|
||||||
final DistributionSetTagManagement distributionSetTagManagement,
|
final DistributionSetTagManagement distributionSetTagManagement,
|
||||||
final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout,
|
final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout,
|
||||||
final TenantConfigurationManagement tenantConfigurationManagement) {
|
final TenantConfigurationManagement tenantConfigurationManagement,
|
||||||
|
final SystemSecurityContext systemSecurityContext) {
|
||||||
super(i18n, eventBus, permissionChecker, managementUIState, distributionAddUpdateWindowLayout,
|
super(i18n, eventBus, permissionChecker, managementUIState, distributionAddUpdateWindowLayout,
|
||||||
distributionSetManagement, dsMetadataPopupLayout, uiNotification, distributionSetTagManagement,
|
distributionSetManagement, dsMetadataPopupLayout, uiNotification, distributionSetTagManagement,
|
||||||
createSoftwareModuleDetailsTable(i18n, permissionChecker, uiNotification),
|
createSoftwareModuleDetailsTable(i18n, permissionChecker, uiNotification),
|
||||||
tenantConfigurationManagement);
|
tenantConfigurationManagement, systemSecurityContext);
|
||||||
restoreState();
|
restoreState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import org.eclipse.hawkbit.repository.SystemManagement;
|
|||||||
import org.eclipse.hawkbit.repository.TargetManagement;
|
import org.eclipse.hawkbit.repository.TargetManagement;
|
||||||
import org.eclipse.hawkbit.repository.TargetTagManagement;
|
import org.eclipse.hawkbit.repository.TargetTagManagement;
|
||||||
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
|
||||||
|
import org.eclipse.hawkbit.security.SystemSecurityContext;
|
||||||
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
import org.eclipse.hawkbit.ui.SpPermissionChecker;
|
||||||
import org.eclipse.hawkbit.ui.UiProperties;
|
import org.eclipse.hawkbit.ui.UiProperties;
|
||||||
import org.eclipse.hawkbit.ui.common.table.AbstractTableLayout;
|
import org.eclipse.hawkbit.ui.common.table.AbstractTableLayout;
|
||||||
@@ -44,11 +45,12 @@ public class DistributionTableLayout extends AbstractTableLayout<DistributionTab
|
|||||||
final UINotification notification, final DistributionSetTagManagement distributionSetTagManagement,
|
final UINotification notification, final DistributionSetTagManagement distributionSetTagManagement,
|
||||||
final TargetTagManagement targetTagManagement, final SystemManagement systemManagement,
|
final TargetTagManagement targetTagManagement, final SystemManagement systemManagement,
|
||||||
final TargetManagement targetManagement, final DeploymentManagement deploymentManagement,
|
final TargetManagement targetManagement, final DeploymentManagement deploymentManagement,
|
||||||
final TenantConfigurationManagement configManagement, final UiProperties uiProperties) {
|
final TenantConfigurationManagement configManagement, final SystemSecurityContext systemSecurityContext,
|
||||||
|
final UiProperties uiProperties) {
|
||||||
|
|
||||||
final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout = new DistributionAddUpdateWindowLayout(
|
final DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout = new DistributionAddUpdateWindowLayout(
|
||||||
i18n, notification, eventBus, distributionSetManagement, distributionSetTypeManagement,
|
i18n, notification, eventBus, distributionSetManagement, distributionSetTypeManagement,
|
||||||
systemManagement, entityFactory, null, configManagement);
|
systemManagement, entityFactory, null, configManagement, systemSecurityContext);
|
||||||
|
|
||||||
final DsMetadataPopupLayout dsMetadataPopupLayout = new DsMetadataPopupLayout(i18n, notification, eventBus,
|
final DsMetadataPopupLayout dsMetadataPopupLayout = new DsMetadataPopupLayout(i18n, notification, eventBus,
|
||||||
distributionSetManagement, entityFactory, permissionChecker);
|
distributionSetManagement, entityFactory, permissionChecker);
|
||||||
@@ -61,7 +63,7 @@ public class DistributionTableLayout extends AbstractTableLayout<DistributionTab
|
|||||||
distributionTable,
|
distributionTable,
|
||||||
new DistributionDetails(i18n, eventBus, permissionChecker, managementUIState, distributionSetManagement,
|
new DistributionDetails(i18n, eventBus, permissionChecker, managementUIState, distributionSetManagement,
|
||||||
dsMetadataPopupLayout, notification, distributionSetTagManagement,
|
dsMetadataPopupLayout, notification, distributionSetTagManagement,
|
||||||
distributionAddUpdateWindowLayout, configManagement));
|
distributionAddUpdateWindowLayout, configManagement, systemSecurityContext));
|
||||||
}
|
}
|
||||||
|
|
||||||
public DistributionTable getDistributionTable() {
|
public DistributionTable getDistributionTable() {
|
||||||
|
|||||||
@@ -41,7 +41,8 @@ import org.eclipse.hawkbit.repository.model.Target;
|
|||||||
import org.eclipse.hawkbit.repository.model.TargetTag;
|
import org.eclipse.hawkbit.repository.model.TargetTag;
|
||||||
import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult;
|
import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult;
|
||||||
import org.eclipse.hawkbit.repository.model.TargetUpdateStatus;
|
import org.eclipse.hawkbit.repository.model.TargetUpdateStatus;
|
||||||
import org.eclipse.hawkbit.tenancy.configuration.TenantConfigurationProperties;
|
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.SpPermissionChecker;
|
||||||
import org.eclipse.hawkbit.ui.UiProperties;
|
import org.eclipse.hawkbit.ui.UiProperties;
|
||||||
import org.eclipse.hawkbit.ui.common.ConfirmationDialog;
|
import org.eclipse.hawkbit.ui.common.ConfirmationDialog;
|
||||||
@@ -110,47 +111,34 @@ import com.vaadin.ui.themes.ValoTheme;
|
|||||||
public class TargetTable extends AbstractTable<Target> {
|
public class TargetTable extends AbstractTable<Target> {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(TargetTable.class);
|
private static final Logger LOG = LoggerFactory.getLogger(TargetTable.class);
|
||||||
|
|
||||||
private static final String TARGET_PINNED = "targetPinned";
|
private static final String TARGET_PINNED = "targetPinned";
|
||||||
|
|
||||||
private static final int PROPERTY_DEPT = 3;
|
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 static final String MESSAGE_ASSIGN_TARGET_TO_MULTIPLE_DISTRIBUTIONS = "message.confirm.assign.multiple.entities.multiple.distributions";
|
||||||
|
|
||||||
private final transient TargetManagement targetManagement;
|
private final transient TargetManagement targetManagement;
|
||||||
|
|
||||||
private final transient DistributionSetManagement distributionSetManagement;
|
private final transient DistributionSetManagement distributionSetManagement;
|
||||||
|
|
||||||
private final transient TargetTagManagement tagManagement;
|
private final transient TargetTagManagement tagManagement;
|
||||||
|
|
||||||
private final transient DeploymentManagement deploymentManagement;
|
private final transient DeploymentManagement deploymentManagement;
|
||||||
|
|
||||||
private final transient TenantConfigurationManagement configManagement;
|
private final transient TenantConfigurationManagement configManagement;
|
||||||
|
private final transient SystemSecurityContext systemSecurityContext;
|
||||||
|
|
||||||
private final ManagementViewClientCriterion managementViewClientCriterion;
|
private final ManagementViewClientCriterion managementViewClientCriterion;
|
||||||
|
|
||||||
private final ManagementUIState managementUIState;
|
private final ManagementUIState managementUIState;
|
||||||
|
private final UiProperties uiProperties;
|
||||||
|
private final ActionTypeOptionGroupAssignmentLayout actionTypeOptionGroupLayout;
|
||||||
|
private final MaintenanceWindowLayout maintenanceWindowLayout;
|
||||||
|
|
||||||
private Button targetPinnedBtn;
|
private Button targetPinnedBtn;
|
||||||
|
|
||||||
private boolean targetPinned;
|
private boolean targetPinned;
|
||||||
|
|
||||||
private final UiProperties uiProperties;
|
|
||||||
|
|
||||||
private ConfirmationDialog confirmDialog;
|
private ConfirmationDialog confirmDialog;
|
||||||
|
|
||||||
private final ActionTypeOptionGroupAssignmentLayout actionTypeOptionGroupLayout;
|
|
||||||
|
|
||||||
private final MaintenanceWindowLayout maintenanceWindowLayout;
|
|
||||||
|
|
||||||
public TargetTable(final UIEventBus eventBus, final VaadinMessageSource i18n, final UINotification notification,
|
public TargetTable(final UIEventBus eventBus, final VaadinMessageSource i18n, final UINotification notification,
|
||||||
final TargetManagement targetManagement, final ManagementUIState managementUIState,
|
final TargetManagement targetManagement, final ManagementUIState managementUIState,
|
||||||
final SpPermissionChecker permChecker, final ManagementViewClientCriterion managementViewClientCriterion,
|
final SpPermissionChecker permChecker, final ManagementViewClientCriterion managementViewClientCriterion,
|
||||||
final DistributionSetManagement distributionSetManagement, final TargetTagManagement tagManagement,
|
final DistributionSetManagement distributionSetManagement, final TargetTagManagement tagManagement,
|
||||||
final DeploymentManagement deploymentManagement, final TenantConfigurationManagement configManagement,
|
final DeploymentManagement deploymentManagement, final TenantConfigurationManagement configManagement,
|
||||||
final UiProperties uiProperties) {
|
final SystemSecurityContext systemSecurityContext, final UiProperties uiProperties) {
|
||||||
super(eventBus, i18n, notification, permChecker);
|
super(eventBus, i18n, notification, permChecker);
|
||||||
this.targetManagement = targetManagement;
|
this.targetManagement = targetManagement;
|
||||||
this.managementViewClientCriterion = managementViewClientCriterion;
|
this.managementViewClientCriterion = managementViewClientCriterion;
|
||||||
@@ -162,6 +150,7 @@ public class TargetTable extends AbstractTable<Target> {
|
|||||||
this.uiProperties = uiProperties;
|
this.uiProperties = uiProperties;
|
||||||
this.actionTypeOptionGroupLayout = new ActionTypeOptionGroupAssignmentLayout(i18n);
|
this.actionTypeOptionGroupLayout = new ActionTypeOptionGroupAssignmentLayout(i18n);
|
||||||
this.maintenanceWindowLayout = new MaintenanceWindowLayout(i18n);
|
this.maintenanceWindowLayout = new MaintenanceWindowLayout(i18n);
|
||||||
|
this.systemSecurityContext = systemSecurityContext;
|
||||||
|
|
||||||
setItemDescriptionGenerator(new AssignInstalledDSTooltipGenerator());
|
setItemDescriptionGenerator(new AssignInstalledDSTooltipGenerator());
|
||||||
addNewContainerDS();
|
addNewContainerDS();
|
||||||
@@ -892,7 +881,7 @@ public class TargetTable extends AbstractTable<Target> {
|
|||||||
if (ids.isEmpty()) {
|
if (ids.isEmpty()) {
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
if (isMultiAssignmentsEnabled()) {
|
if (isMultiAssignmentEnabled()) {
|
||||||
return new HashSet<>(ids);
|
return new HashSet<>(ids);
|
||||||
}
|
}
|
||||||
return Collections.singleton(ids.iterator().next());
|
return Collections.singleton(ids.iterator().next());
|
||||||
@@ -982,11 +971,9 @@ public class TargetTable extends AbstractTable<Target> {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isMultiAssignmentsEnabled() {
|
private boolean isMultiAssignmentEnabled() {
|
||||||
return configManagement
|
return systemSecurityContext.runAsSystem(() -> configManagement
|
||||||
.getConfigurationValue(TenantConfigurationProperties.TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED,
|
.getConfigurationValue(TenantConfigurationKey.MULTI_ASSIGNMENTS_ENABLED, Boolean.class).getValue());
|
||||||
Boolean.class)
|
|
||||||
.getValue();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user