📄 coremenutree.java
字号:
/*
* SSL-Explorer
*
* Copyright (C) 2003-2006 3SP LTD. All Rights Reserved
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package com.sslexplorer.core;
import javax.servlet.http.HttpServletRequest;
import com.sslexplorer.navigation.MenuTree;
import com.sslexplorer.policyframework.Permission;
import com.sslexplorer.policyframework.PolicyConstants;
import com.sslexplorer.security.AuthenticationModuleManager;
import com.sslexplorer.security.PersonalQuestionsAuthenticationModule;
import com.sslexplorer.security.SessionInfo;
/**
* Extension of {@link com.sslexplorer.navigation.MenuTree} used for the main
* menu navigation (i.e. the bar on the left in the default UI).
*
* @author Brett Smith <a href="mailto: brett@3sp.com"><brett@3sp.com></a>
* @version $Revision: 1.44 $
*/
public class CoreMenuTree extends MenuTree {
/**
* Menu tree name
*/
public static final String MENU_ITEM_MENU_TREE = "menuItem";
/**
* Constructor. *
*/
public CoreMenuTree() {
super(CoreMenuTree.MENU_ITEM_MENU_TREE);
// Menu Bar
addMenuItem(null, new MenuItem("myAccount", "navigation", null, 100, false, SessionInfo.USER_CONSOLE_CONTEXT));
addMenuItem(null, new MenuItem("resources", "navigation", null, 200, false, SessionInfo.USER_CONSOLE_CONTEXT));
// My Account Menu
addMenuItem("myAccount", new MenuItem("favorites", "navigation", "/showFavorites.do", 100, true, null,
SessionInfo.USER_CONSOLE_CONTEXT, PolicyConstants.FAVORITES_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_USE
}, null));
addMenuItem("myAccount", new MenuItem("userPreferences", "navigation", "/showUserProperties.do", 200, true, null,
SessionInfo.USER_CONSOLE_CONTEXT, null, null, PolicyConstants.PROFILE_RESOURCE_TYPE));
addMenuItem("myAccount", new ShowChangePasswordMenuItem());
addMenuItem("myAccount", new MenuItem("userAttributes",
"navigation", "/userAttributes.do", 500, true, null,
SessionInfo.USER_CONSOLE_CONTEXT,
PolicyConstants.PERSONAL_DETAILS_RESOURCE_TYPE,
new Permission[] { PolicyConstants.PERM_CHANGE }, null));
// Resources menu
addMenuItem("resources", new MenuItem("userProfiles", "navigation", "/showUserProfiles.do", 100, true, null,
SessionInfo.USER_CONSOLE_CONTEXT, PolicyConstants.PERSONAL_PROFILE_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_MAINTAIN
}, PolicyConstants.PROFILE_RESOURCE_TYPE));
addMenuItem("resources", new MenuItem("userWebForwards", "webForwards", "/showUserWebForwards.do", 50, true, null,
SessionInfo.USER_CONSOLE_CONTEXT, null, null, PolicyConstants.WEBFORWARD_RESOURCE_TYPE));
addMenuItem("resources", new MenuItem("userApplicationShortcuts", "navigation", "/showUserApplicationShortcuts.do", 300, true,
null, SessionInfo.USER_CONSOLE_CONTEXT, null, null, PolicyConstants.APPLICATION_SHORTCUT_RESOURCE_TYPE));
addMenuItem("resources", new MenuItem("userTunnels", "navigation", "/showUserTunnels.do", 500, true, null,
SessionInfo.USER_CONSOLE_CONTEXT, null, null, PolicyConstants.SSL_TUNNEL_RESOURCE_TYPE));
addMenuItem("resources", new MenuItem("userNetworkPlaces", "navigation", "/showUserNetworkPlaces.do", 500, true, null,
SessionInfo.USER_CONSOLE_CONTEXT, null, null, PolicyConstants.NETWORK_PLACE_RESOURCE_TYPE));
// Administration
addMenuItem(null, new MenuItem("configuration", "navigation", null, 100, false, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT));
addMenuItem(null, new MenuItem("accessControl", "navigation", null, 200, false, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT));
addMenuItem(null, new MenuItem("globalResources", "navigation", null, 300, false, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT));
addMenuItem(null, new MenuItem("system", "navigation", null, 300, false, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT));
// System menu
addMenuItem("system", new MenuItem("status", "navigation", "/status.do", 400, true, null,
SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.STATUS_TYPE_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_VIEW
}, null));
addMenuItem("system", new MenuItem("messageQueue", "navigation", "/messageQueue.do", 400, true, null,
SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.MESSAGE_QUEUE_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_VIEW, PolicyConstants.PERM_CONTROL, PolicyConstants.PERM_DELETE,
PolicyConstants.PERM_SEND
}, null));
addMenuItem("system", new MenuItem("shutdown", "navigation", "/showShutdown.do", 500, true, null,
SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.SERVICE_CONTROL_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_SHUTDOWN, PolicyConstants.PERM_RESTART
}, null));
// Configuration
addMenuItem("configuration", new MenuItem("systemConfiguration", "navigation", "/showSystemConfiguration.do", 100,
true, null, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.SYSTEM_CONFIGURATION_RESOURCE_TYPE,
new Permission[] {
PolicyConstants.PERM_CHANGE
}, null));
addMenuItem("configuration", new MenuItem("extensionStore", "navigation", "/showExtensionStore.do?actionTarget=list", 200,
true, null, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.EXTENSIONS_RESOURCE_TYPE,
new Permission[] {
PolicyConstants.PERM_INSTALL, PolicyConstants.PERM_UPDATE, PolicyConstants.PERM_DELETE
}, null));
addMenuItem("configuration", new MenuItem("keyStore", "navigation", "/showKeyStore.do", 300, true, null,
SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.KEYSTORE_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_CHANGE
}, null));
addMenuItem("configuration", new MenuItem("replacements", "navigation", "/showReplacements.do", 600,
true, null, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.REPLACEMENTS_RESOURCE_TYPE,
new Permission[] {
PolicyConstants.PERM_MAINTAIN
}, null));
addMenuItem("configuration", new MenuItem("userAttributeDefinitions", "navigation", "/showUserAttributeDefinitions.do", 700,
true, null, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.USER_ATTRIBUTE_DEFINITIONS_RESOURCE_TYPE,
new Permission[] {
PolicyConstants.PERM_MAINTAIN
}, null));
// Access Control
addMenuItem("accessControl", new MenuItem("authorizedPrincipals", "navigation", "/showAvailableAccounts.do", 100,
true, null, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.ACCOUNTS_RESOURCE_TYPE,
new Permission[] {
PolicyConstants.PERM_CREATE, PolicyConstants.PERM_EDIT, PolicyConstants.PERM_DELETE
}, null));
addMenuItem("accessControl", new MenuItem("availableRoles", "navigation", "/showAvailableRoles.do", 200, true, null,
SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.ROLES_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_CREATE, PolicyConstants.PERM_EDIT, PolicyConstants.PERM_DELETE
}, null));
addMenuItem("accessControl", new MenuItem("policies", "navigation", "/policies.do", 300, true, null,
SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.POLICY_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN, PolicyConstants.PERM_EDIT_AND_ASSIGN, PolicyConstants.PERM_DELETE, PolicyConstants.PERM_ASSIGN
}, null));
addMenuItem("accessControl", new ResourcePermissionsMenuItem());
addMenuItem("accessControl", new MenuItem("authenticationSchemes", "navigation", "/showAuthenticationSchemes.do", 500,
true, null, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.AUTHENTICATION_SCHEMES_RESOURCE_TYPE,
new Permission[] {
PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN, PolicyConstants.PERM_EDIT_AND_ASSIGN, PolicyConstants.PERM_DELETE,
PolicyConstants.PERM_ASSIGN
}, null));
addMenuItem("accessControl", new MenuItem("ipRestrictions", "navigation", "/showAvailableIpRestrictions.do", 600, true, null,
SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.IP_RESTRICTIONS_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_CREATE, PolicyConstants.PERM_DELETE
}, null));
// Global Resources
addMenuItem("globalResources", new MenuItem("managementWebForwards", "webForwards", "/showWebForwards.do", 100, true, null,
SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.WEBFORWARD_RESOURCE_TYPE,
new Permission[] {
PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN, PolicyConstants.PERM_EDIT_AND_ASSIGN,
PolicyConstants.PERM_DELETE, PolicyConstants.PERM_ASSIGN
}));
addMenuItem("globalResources", new MenuItem("networkPlaces", "navigation", "/showNetworkPlaces.do", 200, true, null,
SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.NETWORK_PLACE_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN, PolicyConstants.PERM_EDIT_AND_ASSIGN,
PolicyConstants.PERM_DELETE, PolicyConstants.PERM_ASSIGN
}, PolicyConstants.NETWORK_PLACE_RESOURCE_TYPE));
addMenuItem("globalResources", new MenuItem("applicationShortcuts", "navigation", "/showApplicationShortcuts.do", 300,
true, null, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.APPLICATION_SHORTCUT_RESOURCE_TYPE,
new Permission[] {
PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN, PolicyConstants.PERM_EDIT_AND_ASSIGN,
PolicyConstants.PERM_DELETE, PolicyConstants.PERM_ASSIGN
}));
addMenuItem("globalResources", new MenuItem("tunnels", "navigation", "/showTunnels.do", 400, true, null,
SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.SSL_TUNNEL_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN, PolicyConstants.PERM_EDIT_AND_ASSIGN,
PolicyConstants.PERM_DELETE, PolicyConstants.PERM_ASSIGN
}));
addMenuItem("globalResources", new MenuItem("globalProfiles", "navigation", "/showGlobalProfiles.do", 500, true,
null, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, PolicyConstants.PROFILE_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN, PolicyConstants.PERM_EDIT_AND_ASSIGN,
PolicyConstants.PERM_DELETE, PolicyConstants.PERM_ASSIGN
}));
// Help
addMenuItem(null, new MenuItem("help", "navigation", null, 100, false, SessionInfo.HELP_CONTEXT));
addMenuItem("help", new MenuItem("support", "navigation", "/showSupport.do", 200, true, SessionInfo.HELP_CONTEXT));
addMenuItem("help", new MenuItem("about", "navigation", "/showAbout.do", 300, true, SessionInfo.HELP_CONTEXT));
// Documentation
addMenuItem("help", new MenuItem("knowledgeBase", "navigation", "http://3sp.com/kb/idx/9/0/", 300, true, "_blank",
SessionInfo.HELP_CONTEXT));
}
class ShowChangePasswordMenuItem extends MenuItem {
ShowChangePasswordMenuItem() {
super("changePassword", "navigation", "/showChangePassword.do", 300, true, null,
SessionInfo.USER_CONSOLE_CONTEXT, PolicyConstants.PASSWORD_RESOURCE_TYPE, new Permission[] {
PolicyConstants.PERM_CHANGE
}, null);
}
public boolean isAvailable(int checkNavigationContext, SessionInfo info, HttpServletRequest request) {
boolean available = super.isAvailable(checkNavigationContext, info, request);
if(available) {
available = CoreServlet.getServlet().getUserDatabase().supportsPasswordChange();
}
return available;
}
}
class ResourcePermissionsMenuItem extends MenuItem {
ResourcePermissionsMenuItem() {
super("resourcePermissions", "navigation", "/resourcePermissions.do", 400, true,
null, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, null, null, null);
}
public boolean isAvailable(int checkNavigationContext, SessionInfo info, HttpServletRequest request) {
boolean available = super.isAvailable(checkNavigationContext, info, request);
if (available) {
if (CoreServlet.getServlet().getLogonController().isAdministrator(info.getUser())) {
available = true;
} else {
try {
available = CoreServlet.getServlet().getPolicyDatabase().getPermittingResourcePermissions(null, null,null, info.getUser(), true, false, true).size() > 0;
} catch (Exception e) {
log.error(
"Failed to determine if user is able to delegate any management rights for DELEGATION class.", e);
}
}
}
return available;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -