private List<Panel> getRegionPanels() { Panel[] allPanels = currentSectionRegion.getPanels(); List<Panel> panels = new ArrayList<Panel>(); boolean onlyOnePanel = false; // When a panel is maximized in region, only show it. for (int i = 0; i < allPanels.length; i++) { Panel panel = allPanels[i]; PanelSession status = panel.getPanelSession(); if (status.isMaximizedInRegion()) { PanelPermission viewPerm = PanelPermission.newInstance(panel, PanelPermission.ACTION_VIEW); boolean canViewPanel = getUserStatus().hasPermission(viewPerm); if (canViewPanel) { panels.add(panel); onlyOnePanel = true; break; } } } if (!onlyOnePanel) for (int i = 0; i < allPanels.length; i++) { Panel panel = allPanels[i]; PanelPermission viewPerm = PanelPermission.newInstance(panel, PanelPermission.ACTION_VIEW); boolean canViewPanel = getUserStatus().hasPermission(viewPerm); if (canViewPanel) { panels.add(panel); } } return panels; }
public static PanelPermission getInstance(Principal prpal, Object resource) { Policy policy = SecurityServices.lookup().getSecurityPolicy(); PanelPermission perm = (PanelPermission) policy.getPermission(prpal, PanelPermission.class, getResourceName(resource)); if (perm == null) perm = PanelPermission.newInstance(resource, null); return perm; }
private List getPanels() { List panels = new ArrayList(); UserStatus userStatus = getUserStatus(); if (instance != null) { PanelInstance[] instances = instance.getWorkspace().getPanelInstances(); for (int i = 0; i < instances.length; i++) { if (panelProvider.isAssignableFrom(instances[i].getProvider().getDriver().getClass())) { PanelPermission viewPerm = PanelPermission.newInstance(instances[i], PanelPermission.ACTION_VIEW); if (userStatus.hasPermission(viewPerm)) panels.add(instances[i]); } } } return panels; }
/** * Perform the required logic for this Formatter. Inside, the methods setAttribute and * renderFragment are intended to be used to generate the output and set parameters for this * output. Method getParameter is intended to retrieve input parameters by name. * * <p>Exceptions are to be catched inside the method, and not to be thrown, normally, formatters * could use a error fragment to be displayed when an error happens in displaying. But if the * error is unexpected, it can be wrapped inside a FormatterException. * * @param request user request * @param response response to the user * @throws org.jboss.dashboard.ui.taglib.formatter.FormatterException in case of an unexpected * exception. */ public void service(HttpServletRequest request, HttpServletResponse response) throws FormatterException { Panel panel = (Panel) getParameter("panel"); PanelSession status = panel.getPanelSession(); SectionRegion sectionRegion = panel.getSection().getSectionRegion(panel.getRegion().getId()); boolean columnRegion = panel.getRegion().isColumnRegion(); WorkspaceImpl workspace = NavigationManager.lookup().getCurrentWorkspace(); boolean userIsAdmin = false; if (workspace != null) { WorkspacePermission permToCheck = WorkspacePermission.newInstance(workspace, WorkspacePermission.ACTION_ADMIN); userIsAdmin = UserStatus.lookup().hasPermission(permToCheck); } if (!userIsAdmin) return; PanelPermission editPanelPerm = PanelPermission.newInstance(panel, PanelPermission.ACTION_EDIT); boolean userCanEditPanel = UserStatus.lookup().hasPermission(editPanelPerm); renderFragment("movePanel"); setAttribute("cursorStyle", "move"); setAttribute( "title", StringEscapeUtils.escapeHtml((String) LocaleManager.lookup().localize(panel.getTitle()))); renderFragment("menuLink"); renderFragment("menuStart"); setAttribute("title", LocalizeTag.getLocalizedValue(panel.getTitle(), getLang(), true)); renderFragment("menuTitle"); // Invalidate cache button. if (panel.getCacheTime() > 0) renderMenuOption( "ui.panel.refresh", getPanelActionLink(request, response, panel, "_invalidate-cache"), refreshIco, "R", panel.getCacheTime() > 0); if (status.isShowMode()) { boolean isEditModeEnabled = !status.isEditMode() && panel.supportsEditMode() && userCanEditPanel; // Edit button. if (isEditModeEnabled) renderMenuOption( "ui.panel.editMode", getPanelActionLink(request, response, panel, "_edit-mode"), editModeIco, "L", isEditModeEnabled); } else { // Show mode. renderMenuOption( "ui.panel.showMode", getPanelActionLink(request, response, panel, "_show-mode"), showModeIco, "S", !status.isShowMode()); } // Properties mode renderMenuOption( "ui.panel.editProperties", getPanelActionLink(request, response, panel, "_start-config"), propertiesModeIco, "P", true); // Close button renderFragment("menuSeparator"); renderMenuOption( "ui.panel.close", getPanelActionLink(request, response, panel, "_close"), eraseIco, "D", true, false); // Help mode renderMenuOption( "ui.panel.helpMode", getPanelActionLink(request, response, panel, "_help-mode"), helpModeIco, "?", !status.isHelpMode() && panel.supportsHelpMode()); setAttribute("imageKey", closeIco); renderFragment("menuEnd"); }