Read tenant configuration value from system context to prevent permission issues while loading the rollouts view. (#937)
Signed-off-by: Michael Herdt <Michael.Herdt2@bosch-si.com>
This commit is contained in:
@@ -21,6 +21,7 @@ import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
|
|||||||
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.repository.model.Rollout;
|
import org.eclipse.hawkbit.repository.model.Rollout;
|
||||||
|
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;
|
||||||
@@ -74,12 +75,13 @@ public class RolloutView extends VerticalLayout implements View {
|
|||||||
final RolloutGroupManagement rolloutGroupManagement, final TargetManagement targetManagement,
|
final RolloutGroupManagement rolloutGroupManagement, final TargetManagement targetManagement,
|
||||||
final UINotification uiNotification, final UiProperties uiProperties, final EntityFactory entityFactory,
|
final UINotification uiNotification, final UiProperties uiProperties, final EntityFactory entityFactory,
|
||||||
final VaadinMessageSource i18n, final TargetFilterQueryManagement targetFilterQueryManagement,
|
final VaadinMessageSource i18n, final TargetFilterQueryManagement targetFilterQueryManagement,
|
||||||
final QuotaManagement quotaManagement, final TenantConfigurationManagement tenantConfigManagement) {
|
final QuotaManagement quotaManagement, final TenantConfigurationManagement tenantConfigManagement,
|
||||||
|
final SystemSecurityContext systemSecurityContext) {
|
||||||
this.permChecker = permissionChecker;
|
this.permChecker = permissionChecker;
|
||||||
this.rolloutManagement = rolloutManagement;
|
this.rolloutManagement = rolloutManagement;
|
||||||
this.rolloutListView = new RolloutListView(permissionChecker, rolloutUIState, eventBus, rolloutManagement,
|
this.rolloutListView = new RolloutListView(permissionChecker, rolloutUIState, eventBus, rolloutManagement,
|
||||||
targetManagement, uiNotification, uiProperties, entityFactory, i18n, targetFilterQueryManagement,
|
targetManagement, uiNotification, uiProperties, entityFactory, i18n, targetFilterQueryManagement,
|
||||||
rolloutGroupManagement, quotaManagement, tenantConfigManagement);
|
rolloutGroupManagement, quotaManagement, tenantConfigManagement, systemSecurityContext);
|
||||||
this.rolloutGroupsListView = new RolloutGroupsListView(i18n, eventBus, rolloutGroupManagement, rolloutUIState,
|
this.rolloutGroupsListView = new RolloutGroupsListView(i18n, eventBus, rolloutGroupManagement, rolloutUIState,
|
||||||
permissionChecker);
|
permissionChecker);
|
||||||
this.rolloutGroupTargetsListView = new RolloutGroupTargetsListView(eventBus, i18n, rolloutUIState);
|
this.rolloutGroupTargetsListView = new RolloutGroupTargetsListView(eventBus, i18n, rolloutUIState);
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import org.eclipse.hawkbit.repository.model.Rollout;
|
|||||||
import org.eclipse.hawkbit.repository.model.Rollout.RolloutStatus;
|
import org.eclipse.hawkbit.repository.model.Rollout.RolloutStatus;
|
||||||
import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus;
|
import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus;
|
||||||
import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus.Status;
|
import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus.Status;
|
||||||
|
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.UiProperties;
|
import org.eclipse.hawkbit.ui.UiProperties;
|
||||||
@@ -100,6 +101,8 @@ public class RolloutListGrid extends AbstractGrid<LazyQueryContainer> {
|
|||||||
|
|
||||||
private final transient TenantConfigurationManagement tenantConfigManagement;
|
private final transient TenantConfigurationManagement tenantConfigManagement;
|
||||||
|
|
||||||
|
private final transient SystemSecurityContext systemSecurityContext;
|
||||||
|
|
||||||
private final AddUpdateRolloutWindowLayout addUpdateRolloutWindow;
|
private final AddUpdateRolloutWindowLayout addUpdateRolloutWindow;
|
||||||
|
|
||||||
private final UINotification uiNotification;
|
private final UINotification uiNotification;
|
||||||
@@ -163,7 +166,8 @@ public class RolloutListGrid extends AbstractGrid<LazyQueryContainer> {
|
|||||||
final TargetManagement targetManagement, final EntityFactory entityFactory, final UiProperties uiProperties,
|
final TargetManagement targetManagement, final EntityFactory entityFactory, final UiProperties uiProperties,
|
||||||
final TargetFilterQueryManagement targetFilterQueryManagement,
|
final TargetFilterQueryManagement targetFilterQueryManagement,
|
||||||
final RolloutGroupManagement rolloutGroupManagement, final QuotaManagement quotaManagement,
|
final RolloutGroupManagement rolloutGroupManagement, final QuotaManagement quotaManagement,
|
||||||
final TenantConfigurationManagement tenantConfigManagement) {
|
final TenantConfigurationManagement tenantConfigManagement,
|
||||||
|
final SystemSecurityContext systemSecurityContext) {
|
||||||
super(i18n, eventBus, permissionChecker);
|
super(i18n, eventBus, permissionChecker);
|
||||||
this.rolloutManagement = rolloutManagement;
|
this.rolloutManagement = rolloutManagement;
|
||||||
this.rolloutGroupManagement = rolloutGroupManagement;
|
this.rolloutGroupManagement = rolloutGroupManagement;
|
||||||
@@ -173,6 +177,7 @@ public class RolloutListGrid extends AbstractGrid<LazyQueryContainer> {
|
|||||||
rolloutGroupManagement, quotaManagement);
|
rolloutGroupManagement, quotaManagement);
|
||||||
this.uiNotification = uiNotification;
|
this.uiNotification = uiNotification;
|
||||||
this.rolloutUIState = rolloutUIState;
|
this.rolloutUIState = rolloutUIState;
|
||||||
|
this.systemSecurityContext = systemSecurityContext;
|
||||||
alignGenerator = new AlignCellStyleGenerator(null, centerAlignedColumns, null);
|
alignGenerator = new AlignCellStyleGenerator(null, centerAlignedColumns, null);
|
||||||
|
|
||||||
setGeneratedPropertySupport(new RolloutGeneratedPropertySupport());
|
setGeneratedPropertySupport(new RolloutGeneratedPropertySupport());
|
||||||
@@ -858,8 +863,7 @@ public class RolloutListGrid extends AbstractGrid<LazyQueryContainer> {
|
|||||||
if (!permissionChecker.hasRolloutCreatePermission()) {
|
if (!permissionChecker.hasRolloutCreatePermission()) {
|
||||||
modifiableColumnsList.remove(VIRT_PROP_COPY);
|
modifiableColumnsList.remove(VIRT_PROP_COPY);
|
||||||
}
|
}
|
||||||
if (!permissionChecker.hasRolloutApprovalPermission() || !tenantConfigManagement
|
if (!permissionChecker.hasRolloutApprovalPermission() || !isRolloutApprovalEnabled()) {
|
||||||
.getConfigurationValue(TenantConfigurationKey.ROLLOUT_APPROVAL_ENABLED, Boolean.class).getValue()) {
|
|
||||||
modifiableColumnsList.remove(VIRT_PROP_APPROVE);
|
modifiableColumnsList.remove(VIRT_PROP_APPROVE);
|
||||||
}
|
}
|
||||||
if (!permissionChecker.hasRolloutDeletePermission()) {
|
if (!permissionChecker.hasRolloutDeletePermission()) {
|
||||||
@@ -873,4 +877,9 @@ public class RolloutListGrid extends AbstractGrid<LazyQueryContainer> {
|
|||||||
setColumns(modifiableColumnsList.toArray());
|
setColumns(modifiableColumnsList.toArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isRolloutApprovalEnabled(){
|
||||||
|
return systemSecurityContext.runAsSystem(() -> tenantConfigManagement
|
||||||
|
.getConfigurationValue(TenantConfigurationKey.ROLLOUT_APPROVAL_ENABLED, Boolean.class).getValue());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import org.eclipse.hawkbit.repository.RolloutManagement;
|
|||||||
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
|
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
|
||||||
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.UiProperties;
|
import org.eclipse.hawkbit.ui.UiProperties;
|
||||||
import org.eclipse.hawkbit.ui.common.grid.AbstractGrid;
|
import org.eclipse.hawkbit.ui.common.grid.AbstractGrid;
|
||||||
@@ -40,6 +41,7 @@ public class RolloutListView extends AbstractGridComponentLayout {
|
|||||||
private final transient TargetFilterQueryManagement targetFilterQueryManagement;
|
private final transient TargetFilterQueryManagement targetFilterQueryManagement;
|
||||||
private final transient QuotaManagement quotaManagement;
|
private final transient QuotaManagement quotaManagement;
|
||||||
private final transient TenantConfigurationManagement tenantConfigManagement;
|
private final transient TenantConfigurationManagement tenantConfigManagement;
|
||||||
|
private final transient SystemSecurityContext systemSecurityContext;
|
||||||
|
|
||||||
private final SpPermissionChecker permissionChecker;
|
private final SpPermissionChecker permissionChecker;
|
||||||
private final RolloutUIState rolloutUIState;
|
private final RolloutUIState rolloutUIState;
|
||||||
@@ -52,7 +54,8 @@ public class RolloutListView extends AbstractGridComponentLayout {
|
|||||||
final UiProperties uiProperties, final EntityFactory entityFactory, final VaadinMessageSource i18n,
|
final UiProperties uiProperties, final EntityFactory entityFactory, final VaadinMessageSource i18n,
|
||||||
final TargetFilterQueryManagement targetFilterQueryManagement,
|
final TargetFilterQueryManagement targetFilterQueryManagement,
|
||||||
final RolloutGroupManagement rolloutGroupManagement, final QuotaManagement quotaManagement,
|
final RolloutGroupManagement rolloutGroupManagement, final QuotaManagement quotaManagement,
|
||||||
final TenantConfigurationManagement tenantConfigManagement) {
|
final TenantConfigurationManagement tenantConfigManagement,
|
||||||
|
final SystemSecurityContext systemSecurityContext) {
|
||||||
super(i18n, eventBus);
|
super(i18n, eventBus);
|
||||||
this.permissionChecker = permissionChecker;
|
this.permissionChecker = permissionChecker;
|
||||||
this.rolloutUIState = rolloutUIState;
|
this.rolloutUIState = rolloutUIState;
|
||||||
@@ -65,6 +68,7 @@ public class RolloutListView extends AbstractGridComponentLayout {
|
|||||||
this.entityFactory = entityFactory;
|
this.entityFactory = entityFactory;
|
||||||
this.targetFilterQueryManagement = targetFilterQueryManagement;
|
this.targetFilterQueryManagement = targetFilterQueryManagement;
|
||||||
this.tenantConfigManagement = tenantConfigManagement;
|
this.tenantConfigManagement = tenantConfigManagement;
|
||||||
|
this.systemSecurityContext = systemSecurityContext;
|
||||||
|
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
@@ -85,7 +89,7 @@ public class RolloutListView extends AbstractGridComponentLayout {
|
|||||||
public AbstractGrid<LazyQueryContainer> createGrid() {
|
public AbstractGrid<LazyQueryContainer> createGrid() {
|
||||||
return new RolloutListGrid(getI18n(), getEventBus(), rolloutManagement, uiNotification, rolloutUIState,
|
return new RolloutListGrid(getI18n(), getEventBus(), rolloutManagement, uiNotification, rolloutUIState,
|
||||||
permissionChecker, targetManagement, entityFactory, uiProperties, targetFilterQueryManagement,
|
permissionChecker, targetManagement, entityFactory, uiProperties, targetFilterQueryManagement,
|
||||||
rolloutGroupManagement, quotaManagement, tenantConfigManagement);
|
rolloutGroupManagement, quotaManagement, tenantConfigManagement, systemSecurityContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user