From 360268619defc2aa282fab130dd3cc39ef2d4ae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20B=C3=B6rnert?= Date: Thu, 6 Dec 2018 15:56:37 +0100 Subject: [PATCH] added info dialog to ensure admins are at least informed if their tenant is not public, and can then take action if required --- .../adminconsole/AdminConsoleEntryPoint.java | 25 ++++++++++++++++++- .../LocalServerManagementPanel.java | 2 +- .../sailing/gwt/ui/client/StringMessages.java | 1 + .../gwt/ui/client/StringMessages.properties | 1 + .../ui/client/StringMessages_de.properties | 1 + .../gwt/ui/server/SailingServiceImpl.java | 7 +++++- .../gwt/ui/shared/ServerConfigurationDTO.java | 13 +++++++++- 7 files changed, 46 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java index 920b17c382d..dc7be7ec84e 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AdminConsoleEntryPoint.java @@ -6,6 +6,7 @@ import java.util.Map; import java.util.Set; import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.ServiceDefTarget; import com.google.gwt.user.client.ui.HeaderPanel; @@ -27,8 +28,9 @@ import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants; import com.sap.sailing.gwt.ui.masterdataimport.MasterDataImportPanel; import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO; import com.sap.sailing.gwt.ui.shared.RegattaDTO; -import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTOWithSecurity; import com.sap.sailing.gwt.ui.shared.SecurityStylesheetResources; +import com.sap.sailing.gwt.ui.shared.ServerConfigurationDTO; +import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTOWithSecurity; import com.sap.sse.gwt.adminconsole.AdminConsolePanel; import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources; import com.sap.sse.gwt.adminconsole.DefaultRefreshableAdminConsolePanel; @@ -41,6 +43,7 @@ import com.sap.sse.gwt.client.controls.filestorage.FileStoragePanel; import com.sap.sse.gwt.client.panels.HorizontalTabLayoutPanel; import com.sap.sse.gwt.resources.Highcharts; import com.sap.sse.security.shared.HasPermissions.DefaultActions; +import com.sap.sse.security.shared.dto.StrippedUserGroupDTO; import com.sap.sse.security.shared.impl.SecuredSecurityTypes; import com.sap.sse.security.ui.authentication.decorator.AuthorizedContentDecorator; import com.sap.sse.security.ui.authentication.decorator.WidgetFactory; @@ -77,6 +80,7 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint authorizedContentDecorator.setContentWidgetFactory(new WidgetFactory() { @Override public Widget get() { + checkPublicServerNonPublicUserWarning(); return createAdminConsolePanel(serverInfo); } }); @@ -86,6 +90,25 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint rootPanel.add(headerPanel); } + protected void checkPublicServerNonPublicUserWarning() { + getSailingService().getServerConfiguration(new AsyncCallback() { + @Override + public void onFailure(Throwable caught) { + } + + @Override + public void onSuccess(ServerConfigurationDTO result) { + if (Boolean.TRUE.equals(result.isPublic())) { + StrippedUserGroupDTO currentTenant = getUserService().getCurrentTenant(); + StrippedUserGroupDTO serverTenant = result.getServerDefaultTenant(); + if (!serverTenant.equals(currentTenant)) { + Window.alert(getStringMessages().serverIsPublicButTenantIsNot()); + } + } + } + }); + } + private Widget createAdminConsolePanel(ServerInfoDTO serverInfo) { AdminConsolePanel panel = new AdminConsolePanel(getUserService(), serverInfo, getStringMessages().releaseNotes(), "/release_notes_admin.html", /* error reporter */ this, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LocalServerManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LocalServerManagementPanel.java index a1e8d455c8d..1fdeeee2f2f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LocalServerManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LocalServerManagementPanel.java @@ -118,7 +118,7 @@ public class LocalServerManagementPanel extends SimplePanel { Boolean selfServiceServer = isSelfServiceServerCheckbox.isEnabled() ? isSelfServiceServerCheckbox.getValue() : null; ServerConfigurationDTO serverConfig = new ServerConfigurationDTO(isStandaloneServerCheckbox.getValue(), - publicServer, selfServiceServer); + publicServer, selfServiceServer, null); sailingService.updateServerConfiguration(serverConfig, new AsyncCallback() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 7ed947aabef..957c5e98bb4 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -2225,4 +2225,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, String migrateCompetitors(); String migrateBoats(); String migrateHierarchyToGroupOwner(); + String serverIsPublicButTenantIsNot(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index edaa7fc6289..b170fac04fb 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -2224,3 +2224,4 @@ currentGroupOwner=Current group owner migrateCompetitors=Migrate competitors migrateBoats=Migrate boats migrateHierarchyToGroupOwner=Migrate hierarchy to group owner +serverIsPublicButTenantIsNot=This server is configured as public, your current tenant is not the server ones, your created objects will not be public without further server configuration. Change your default tenant via the UserProfile in home if you want a default public server scenario. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index c91e8daaa6f..a9e8c45d143 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -2219,3 +2219,4 @@ currentGroupOwner=Aktueller Gruppen Besitzer migrateCompetitors=Teilnehmer migrieren migrateBoats=Boote migrieren migrateHierarchyToGroupOwner=Hierarchie zu Gruppen Besitzer migrieren +serverIsPublicButTenantIsNot=Der Server ist als Public Server konfiguratiert, aber der derzeit ausgewählte Tenant enspricht nicht dem Standart-Tenant vom Server. Erstellte Objecte sind somit nicht public sofern keine weiteren Servereinstellungen vorgenommen worden. Sofern ein Standart Public Server Scenario vorgesehen ist, bitte den Tenant wechseln mithilfe dem UserProfile auf Home. \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 163c67b6c9f..228615452c8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -606,6 +606,7 @@ import com.sap.sse.security.shared.QualifiedObjectIdentifier; import com.sap.sse.security.shared.RoleDefinition; import com.sap.sse.security.shared.UserGroupManagementException; import com.sap.sse.security.shared.WildcardPermission; +import com.sap.sse.security.shared.dto.StrippedUserGroupDTO; import com.sap.sse.security.shared.dto.UserGroupDTO; import com.sap.sse.security.shared.impl.Role; import com.sap.sse.security.shared.impl.SecuredSecurityTypes; @@ -613,6 +614,7 @@ import com.sap.sse.security.shared.impl.SecuredSecurityTypes.ServerActions; import com.sap.sse.security.shared.impl.User; import com.sap.sse.security.shared.impl.UserGroup; import com.sap.sse.security.shared.impl.WildcardPermissionEncoder; +import com.sap.sse.security.ui.server.SecurityDTOFactory; import com.sap.sse.security.ui.server.SecurityDTOUtil; import com.sap.sse.security.ui.shared.SuccessInfo; import com.sap.sse.shared.media.ImageDescriptor; @@ -4827,8 +4829,11 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S @Override public ServerConfigurationDTO getServerConfiguration() { SailingServerConfiguration sailingServerConfiguration = getService().getSailingServerConfiguration(); + UserGroup serverTenant = getSecurityService().getDefaultTenant(); + StrippedUserGroupDTO serverTenantDTO = new SecurityDTOFactory() + .createStrippedUserGroupDTOFromUserGroup(serverTenant, new HashMap<>()); ServerConfigurationDTO result = new ServerConfigurationDTO(sailingServerConfiguration.isStandaloneServer(), - isPublicServer(), isSelfServiceServer()); + isPublicServer(), isSelfServiceServer(), serverTenantDTO); return result; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/ServerConfigurationDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/ServerConfigurationDTO.java index fb9fc6633d4..c028cbd977e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/ServerConfigurationDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/ServerConfigurationDTO.java @@ -1,20 +1,31 @@ package com.sap.sailing.gwt.ui.shared; import com.google.gwt.user.client.rpc.IsSerializable; +import com.sap.sse.security.shared.dto.StrippedUserGroupDTO; public class ServerConfigurationDTO implements IsSerializable { private boolean isStandaloneServer; private Boolean isPublic; private Boolean isSelfService; + private StrippedUserGroupDTO serverDefaultTenant; // for GWT ServerConfigurationDTO() { } - public ServerConfigurationDTO(boolean isStandaloneServer, Boolean isPublic, Boolean isSelfService) { + /** + * serverDefaultTenant is only for transfer to client, it is not used in the server configuration update + */ + public ServerConfigurationDTO(boolean isStandaloneServer, Boolean isPublic, Boolean isSelfService, + StrippedUserGroupDTO serverDefaultTenant) { this.isStandaloneServer = isStandaloneServer; this.isPublic = isPublic; this.isSelfService = isSelfService; + this.serverDefaultTenant = serverDefaultTenant; + } + + public StrippedUserGroupDTO getServerDefaultTenant() { + return serverDefaultTenant; } public boolean isStandaloneServer() {