Skip to content

Commit 72bdd15

Browse files
committed
added Admin Tool Action to prevent non-admins
1 parent abe3dbc commit 72bdd15

File tree

3 files changed

+76
-11
lines changed

3 files changed

+76
-11
lines changed

modules/AdministrationGUI/src/main/java/org/janelia/workstation/admin/AdministrationTopComponent.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,6 @@
4444
)
4545
@TopComponent.Registration(mode = "editor", openAtStartup = false)
4646
@ActionID(category = "Window", id = "org.janelia.workstation.admin.AdministrationTopComponent")
47-
@ActionReference(path = "Menu/Window/Core", position = 10)
48-
@TopComponent.OpenActionRegistration(
49-
displayName = "#CTL_AdministrationTopComponentAction",
50-
preferredID = AdministrationTopComponent.PREFERRED_ID
51-
)
5247
@Messages({
5348
"CTL_AdministrationTopComponentAction=Administration Tool",
5449
"CTL_AdministrationTopComponent=" + AdministrationTopComponent.LABEL_TEXT,
@@ -63,13 +58,12 @@ public final class AdministrationTopComponent extends TopComponent {
6358

6459
private JPanel topMenu;
6560
private Refreshable currentView;
66-
private boolean enabled;
6761

6862
public AdministrationTopComponent() {
6963
setupGUI();
7064
setName(Bundle.CTL_AdministrationTopComponent());
7165
setToolTipText(Bundle.HINT_AdministrationTopComponent());
72-
enabled = AccessManager.getAccessManager().isAdmin();
66+
boolean enabled = AccessManager.getAccessManager().isAdmin();
7367
setEnabled(enabled);
7468
}
7569

@@ -93,7 +87,6 @@ private void setupGUI() {
9387
listUsersButton.setVerticalTextPosition(SwingConstants.BOTTOM);
9488
listUsersButton.setHorizontalTextPosition(SwingConstants.CENTER);
9589
listUsersButton.addActionListener(event -> viewUserList());
96-
listUsersButton.setEnabled(enabled);
9790
row1.add(listUsersButton);
9891

9992
row1.add(Box.createHorizontalStrut(20)); // Add space between buttons
@@ -105,7 +98,6 @@ private void setupGUI() {
10598
listGroupsButton.setVerticalTextPosition(SwingConstants.BOTTOM);
10699
listGroupsButton.setHorizontalTextPosition(SwingConstants.CENTER);
107100
listGroupsButton.addActionListener(event -> viewGroupList());
108-
listGroupsButton.setEnabled(enabled);
109101
row1.add(listGroupsButton);
110102

111103
row1.add(Box.createHorizontalStrut(20));
@@ -115,7 +107,6 @@ private void setupGUI() {
115107
getLogsButton.addActionListener(event -> getLogs());
116108
getLogsButton.setVerticalTextPosition(SwingConstants.BOTTOM);
117109
getLogsButton.setHorizontalTextPosition(SwingConstants.CENTER);
118-
getLogsButton.setEnabled(enabled);
119110
row1.add(getLogsButton);
120111

121112
row1.add(Box.createHorizontalStrut(20));
@@ -126,7 +117,6 @@ private void setupGUI() {
126117
workspaceCleanupButton.setVerticalTextPosition(SwingConstants.BOTTOM);
127118
workspaceCleanupButton.setHorizontalTextPosition(SwingConstants.CENTER);
128119
workspaceCleanupButton.addActionListener(event -> databaseCleanup());
129-
workspaceCleanupButton.setEnabled(enabled);
130120
row1.add(workspaceCleanupButton);
131121

132122
// Add both rows to the main menu
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package org.janelia.workstation.admin.nb_actions;
2+
import java.awt.event.ActionEvent;
3+
4+
import org.janelia.workstation.admin.AdministrationTopComponent;
5+
import org.janelia.workstation.core.api.AccessManager;
6+
import org.openide.awt.ActionID;
7+
import org.openide.awt.ActionReference;
8+
import org.openide.awt.ActionRegistration;
9+
import org.openide.util.HelpCtx;
10+
import org.openide.util.NbBundle.Messages;
11+
import org.openide.util.actions.SystemAction;
12+
import org.slf4j.LoggerFactory;
13+
import org.openide.windows.TopComponent;
14+
import org.openide.windows.WindowManager;
15+
16+
@ActionID(
17+
category = "Window",
18+
id = "org.janelia.workstation.admin.OpenAdminTopComponentAction"
19+
)
20+
@ActionRegistration(
21+
displayName = "#CTL_AdministrationTopComponentAction",
22+
lazy = false
23+
)
24+
@Messages("CTL_AdministrationTopComponentAction=Administration Tool")
25+
public final class OpenAdminPanelAction extends SystemAction {
26+
27+
@Override
28+
public String getName() {
29+
return "Administration Tool";
30+
}
31+
32+
@Override
33+
public HelpCtx getHelpCtx() {
34+
return null;
35+
}
36+
37+
@Override
38+
public void actionPerformed(ActionEvent e) {
39+
if (AccessManager.getAccessManager().isAdmin()) {
40+
TopComponent win = WindowManager.getDefault()
41+
.findTopComponent(AdministrationTopComponent.PREFERRED_ID);
42+
if (win != null) {
43+
win.open();
44+
win.requestActive();
45+
}
46+
} else {
47+
// either silently disable, or tell the user
48+
LoggerFactory.getLogger(getClass())
49+
.warn("Non-admin attempted to open Administration Tool");
50+
}
51+
}
52+
}
53+
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.janelia.workstation.admin.nb_actions;
2+
3+
import javax.swing.Action;
4+
5+
import org.janelia.workstation.common.nb_action.RunAsMenuAction;
6+
import org.janelia.workstation.integration.spi.actions.AdminActionBuilder;
7+
import org.openide.util.actions.SystemAction;
8+
import org.openide.util.lookup.ServiceProvider;
9+
10+
/**
11+
* Builds the admin menu item for launching the Admin GUI.
12+
*
13+
* @author <a href="mailto:schauderd@janelia.hhmi.org">David Schauder</a>
14+
*/
15+
@ServiceProvider(service = AdminActionBuilder.class, position=1)
16+
public final class OpenAdminPanelActionBuilder implements AdminActionBuilder {
17+
@Override
18+
public Action getAction() {
19+
return SystemAction.get(OpenAdminPanelAction.class);
20+
}
21+
}
22+

0 commit comments

Comments
 (0)