public boolean isPermitted(UserSession session) { if (StringUtils.isEmpty(id) || isSeparator()) { return true; } else { boolean screenPermitted = session.isScreenPermitted(id); if (screenPermitted) { Element permissionsElem = descriptor.element("permissions"); if (permissionsElem != null) { for (Element element : Dom4j.elements(permissionsElem, "permission")) { PermissionType type = PermissionType.valueOf(element.attributeValue("type")); String target = element.attributeValue("target"); screenPermitted = session.isPermitted(type, target); if (!screenPermitted) break; } } } return screenPermitted; } }
protected void build(SideMenu menu, List<MenuItem> rootItems) { Window window = ComponentsHelper.getWindowImplementation(menu); if (window == null) { throw new IllegalStateException("SideMenu is not belong to Window"); } for (MenuItem menuItem : rootItems) { // AppMenu does not support separators if (menuItem.isPermitted(session) && !menuItem.isSeparator()) { createMenuBarItem(window, menu, menuItem); } } removeExtraSeparators(menu); }
protected void build(AppMenu appMenu, List<MenuItem> rootItems) { this.appMenu = appMenu; Window window = ComponentsHelper.getWindowImplementation(appMenu); if (window == null) { throw new IllegalStateException("AppMenu is not belong to Window"); } for (MenuItem menuItem : rootItems) { // AppMenu does not load top-level separators if (menuItem.isPermitted(session) && !menuItem.isSeparator()) { createMenuBarItem(window, menuItem); } } removeExtraSeparators(); }
private void walkMenu(MenuItem info, Node<BasicPermissionTarget> node) { String id = info.getId(); String caption = menuConfig.getItemCaption(id) .replaceAll("<.+?>", "") .replaceAll(">", ""); caption = StringEscapeUtils.unescapeHtml4(caption); if (info.getChildren() != null && !info.getChildren().isEmpty()) { Node<BasicPermissionTarget> n = new Node<>(new BasicPermissionTarget("category:" + id, caption, id)); node.addChild(n); for (MenuItem item : info.getChildren()) { walkMenu(item, n); } } else { if (!info.isSeparator()) { Node<BasicPermissionTarget> n = new Node<>(new BasicPermissionTarget("item:" + id, caption, id)); node.addChild(n); } } }
protected void createSubMenu(Window webWindow, SideMenu menu, SideMenu.MenuItem vItem, MenuItem parentItem, UserSession session) { if (parentItem.isPermitted(session)) { for (MenuItem child : parentItem.getChildren()) { if (child.isSeparator()) { continue; } if (child.isPermitted(session)) { SideMenu.MenuItem menuItem = menu.createMenuItem(child.getId(), menuConfig.getItemCaption(child.getId())); assignDescription(menuItem, child); assignIcon(menuItem, child); assignStyleName(menuItem, child); if (child.getChildren().isEmpty()) { menuItem.setCommand(createMenuBarCommand(child)); assignShortcut(webWindow, menuItem, child); vItem.addChildItem(menuItem); } else { createSubMenu(webWindow, menu, menuItem, child, session); assignExpanded(menuItem, child); if (!isMenuItemEmpty(menuItem)) { vItem.addChildItem(menuItem); } } } } } }
if (child.getChildren().isEmpty()) { if (child.isPermitted(session)) { if (child.isSeparator()) { vItem.addChildItem(appMenu.createSeparator()); continue;