added info dialog to ensure admins are at least informed if their tenant

is not public, and can then take action if required
This commit is contained in:
Kai Börnert committed 2018-12-06 15:56:47 +01:00
1 parent 68015a1728
commit 360268619d
7 files changed
+46 -4

No files matched your search

@@ -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<ServerConfigurationDTO>() {
@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,
@@ -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<Void>() {
@Override
@@ -2225,4 +2225,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
String migrateCompetitors();
String migrateBoats();
String migrateHierarchyToGroupOwner();
String serverIsPublicButTenantIsNot();
}
@@ -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.
@@ -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.
@@ -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;
}
@@ -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() {