diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/security/SecuredDomainType.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/security/SecuredDomainType.java index 12650f28312..2d09ea555fb 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/security/SecuredDomainType.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/security/SecuredDomainType.java @@ -72,6 +72,9 @@ public class SecuredDomainType extends HasPermissionsImpl { private static final Action[] ALL_ACTIONS = new Action[] { READ_PUBLIC, DefaultActions.READ, DefaultActions.CREATE, DefaultActions.UPDATE, DefaultActions.CHANGE_OWNERSHIP, DefaultActions.CHANGE_ACL }; + + public static final Action[] MUTATION_ACTIONS = new Action[] { DefaultActions.CREATE, DefaultActions.UPDATE, + DefaultActions.CHANGE_OWNERSHIP, DefaultActions.CHANGE_ACL }; }; /** 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 8b943f80dfc..766d3b1bb9b 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 @@ -13,6 +13,7 @@ import com.google.gwt.user.client.ui.HeaderPanel; import com.google.gwt.user.client.ui.RootLayoutPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.security.SecuredDomainType; +import com.sap.sailing.domain.common.security.SecuredDomainType.CompetitorAndBoatActions; import com.sap.sailing.gwt.common.authentication.FixedSailingAuthentication; import com.sap.sailing.gwt.common.authentication.SAPSailingHeaderWithAuthentication; import com.sap.sailing.gwt.ui.client.AbstractSailingEntryPoint; @@ -119,7 +120,9 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint leaderboardsDisplayers = new HashSet<>(); leaderboardGroupsDisplayers = new HashSet<>(); - final EventManagementPanel eventManagementPanel = new EventManagementPanel(getSailingService(), getUserService(), this, this, getStringMessages(), panel); + /* EVENTS */ + final EventManagementPanel eventManagementPanel = new EventManagementPanel(getSailingService(), + getUserService(), this, this, getStringMessages(), panel); eventManagementPanel.ensureDebugId("EventManagement"); panel.addToVerticalTabPanel(new DefaultRefreshableAdminConsolePanel(eventManagementPanel) { @Override @@ -127,11 +130,10 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint getWidget().fillEvents(); fillLeaderboardGroups(); } - }, getStringMessages().events()); // no permissions required; we show those events the user may read + }, getStringMessages().events(), SecuredDomainType.EVENT.getPermission(DefaultActions.MUTATION_ACTIONS)); leaderboardGroupsDisplayers.add(eventManagementPanel); /* REGATTAS */ - RegattaManagementPanel regattaManagementPanel = new RegattaManagementPanel( getSailingService(), getUserService(), this, getStringMessages(), this, eventManagementPanel); regattaManagementPanel.ensureDebugId("RegattaStructureManagement"); @@ -140,11 +142,10 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint public void refreshAfterBecomingVisible() { fillRegattas(); } - }, getStringMessages().regattas(), SecuredDomainType.EVENT.getPermission(DefaultActions.MUTATION_ACTIONS)); + }, getStringMessages().regattas(), SecuredDomainType.REGATTA.getPermission(DefaultActions.MUTATION_ACTIONS)); regattasDisplayers.add(regattaManagementPanel); /* LEADERBOARDS */ - final HorizontalTabLayoutPanel leaderboardTabPanel = panel.addVerticalTab(getStringMessages().leaderboards(), "LeaderboardPanel"); final LeaderboardConfigPanel leaderboardConfigPanel = new LeaderboardConfigPanel(getSailingService(), getUserService(), this, this, getStringMessages(), /* showRaceDetails */true, this); @@ -179,9 +180,7 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint leaderboardsDisplayers.add(leaderboardGroupConfigPanel); /* RACES */ - final HorizontalTabLayoutPanel racesTabPanel = panel.addVerticalTab(getStringMessages().trackedRaces(), "RacesPanel"); - racesTabPanel.ensureDebugId("RacesPanel"); final TrackedRacesManagementPanel trackedRacesManagementPanel = new TrackedRacesManagementPanel( getSailingService(), getUserService(), this, this, getStringMessages()); @@ -201,7 +200,7 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint public void refreshAfterBecomingVisible() { getWidget().refreshCompetitorList(); } - }, getStringMessages().competitors()); // no permissions required; we show those competitors the user may read + }, getStringMessages().competitors(), SecuredDomainType.COMPETITOR.getPermission(CompetitorAndBoatActions.MUTATION_ACTIONS)); final BoatPanel boatPanel = new BoatPanel(getSailingService(), getUserService(), getStringMessages(), this); boatPanel.ensureDebugId("BoatPanel"); @@ -210,7 +209,7 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint public void refreshAfterBecomingVisible() { getWidget().refreshBoatList(); } - }, getStringMessages().boats()); // no permissions required; we show those boats the user may read + }, getStringMessages().boats(), SecuredDomainType.BOAT.getPermission(CompetitorAndBoatActions.MUTATION_ACTIONS)); RaceCourseManagementPanel raceCourseManagementPanel = new RaceCourseManagementPanel(getSailingService(), this, this, getStringMessages()); panel.addToTabPanel(racesTabPanel, new DefaultRefreshableAdminConsolePanel(raceCourseManagementPanel), getStringMessages().courseLayout()); @@ -231,7 +230,6 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint }, getStringMessages().mediaPanel()); // no permissions required; we show those media the user may read /* RACE COMMITTEE APP */ - final HorizontalTabLayoutPanel raceCommitteeTabPanel = panel.addVerticalTab(getStringMessages().raceCommitteeApp(), "RaceCommiteeAppPanel"); final DeviceConfigurationUserPanel deviceConfigurationUserPanel = new DeviceConfigurationUserPanel(getSailingService(), getUserService(), getStringMessages(), this); @@ -239,7 +237,6 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint getStringMessages().deviceConfiguration()); // no permissions required; we show those device configurations the user may read /* CONNECTORS */ - final HorizontalTabLayoutPanel connectorsTabPanel = panel.addVerticalTab(getStringMessages().connectors(), "TrackingProviderPanel"); TracTracEventManagementPanel tractracEventManagementPanel = new TracTracEventManagementPanel(getSailingService(), this, this, getStringMessages()); @@ -297,9 +294,8 @@ public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint SecuredDomainType.REGATTA.getPermission(DefaultActions.CREATE)); // TODO bug4763 provide the default CREATE ownership for REGATTA / EVENT /* ADVANCED */ - - final HorizontalTabLayoutPanel advancedTabPanel = panel.addVerticalTab(getStringMessages().advanced(), "AdvancedPanel"); - advancedTabPanel.ensureDebugId("AdvancedTab"); + final HorizontalTabLayoutPanel advancedTabPanel = panel.addVerticalTab(getStringMessages().advanced(), + "AdvancedTab"); final ReplicationPanel replicationPanel = new ReplicationPanel(getSailingService(), this, getStringMessages()); panel.addToTabPanel(advancedTabPanel, new DefaultRefreshableAdminConsolePanel(replicationPanel) { @Override diff --git a/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java b/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java index d406a24ce2b..31eb4997cd8 100644 --- a/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java +++ b/java/com.sap.sse.gwt.adminconsole/src/com/sap/sse/gwt/adminconsole/AdminConsolePanel.java @@ -98,7 +98,7 @@ public class AdminConsolePanel extends HeaderPanel implements HandleTabSelectabl /** * If {@code null}, any permission will be accepted by - * {@link #remeberWidgetLocationAndPermissions(VerticalOrHorizontalTabLayoutPanel, Widget, String, HasPermissions...)} + * {@link #rememberWidgetLocationAndPermissions(VerticalOrHorizontalTabLayoutPanel, Widget, String, HasPermissions...)} * which is used by all methods that add a panel and optionally specify permissions required to see that panel. * If this field holds a valid permission collection, only permissions from this collection will be accepted. * This can be used to keep a central repository of all such permissions which in turn may be used to @@ -278,7 +278,7 @@ public class AdminConsolePanel extends HeaderPanel implements HandleTabSelectabl AbstractEntryPoint.setTabPanelSize(newTabPanel, "100%", "100%"); newTabPanel.addSelectionHandler(tabSelectionHandler); newTabPanel.ensureDebugId(tabDebugId); - remeberWidgetLocationAndPermissions(topLevelTabPanelWrapper, newTabPanel, tabTitle, requiresAnyOfThesePermissions); + rememberWidgetLocationAndPermissions(topLevelTabPanelWrapper, newTabPanel, tabTitle, requiresAnyOfThesePermissions); return newTabPanel; } @@ -341,7 +341,7 @@ public class AdminConsolePanel extends HeaderPanel implements HandleTabSelectabl * method can be called. */ private void addToTabPanel(VerticalOrHorizontalTabLayoutPanel tabPanel, RefreshableAdminConsolePanel panelToAdd, String tabTitle, WildcardPermission... requiresAnyOfThesePermissions) { - remeberWidgetLocationAndPermissions(tabPanel, wrapInScrollPanel(panelToAdd.getWidget()), tabTitle, requiresAnyOfThesePermissions); + rememberWidgetLocationAndPermissions(tabPanel, wrapInScrollPanel(panelToAdd.getWidget()), tabTitle, requiresAnyOfThesePermissions); panelsByWidget.put(panelToAdd.getWidget(), panelToAdd); } @@ -356,7 +356,7 @@ public class AdminConsolePanel extends HeaderPanel implements HandleTabSelectabl * widget. Otherwise, if any of these permissions implies any of the permissions the user has, the user * will be shown the widget. */ - private void remeberWidgetLocationAndPermissions(VerticalOrHorizontalTabLayoutPanel tabPanel, Widget widgetToAdd, + private void rememberWidgetLocationAndPermissions(VerticalOrHorizontalTabLayoutPanel tabPanel, Widget widgetToAdd, String tabTitle, WildcardPermission... requiresAnyOfThesePermissions) { if (acceptablePermissionsRequiredToSeeWidgets != null) { for (final WildcardPermission requiredPermission : requiresAnyOfThesePermissions) {