Skip to content

Load security grants for an item

Loads the security grants recorded for one menu item, or all grants when no item is supplied. This is the lazily-loaded SecurityGroups child collection of clsMenuItem.

Field Value
Operation ID OP-MENU-10
Trigger First access of clsMenuItem.SecurityGroups, or a direct call to GetMenuSecuritiesForItem
Inputs IDataPortalInfo, menu item sequence number
Outputs Populated clsMenuSecurityCollection
Primary components clsMenuSecurityCollection.GetMenuSecuritiesForItem
Entry point SAIF.Business.Menu/clsMenuSecurityCollection.vb

Steps

  1. Build Criteria(dpi, menuItemSeqNum).
  2. BeforeRetrieve: when MenuItemSeqNum > 0 use RetrieveForItemSQL (SQL-028) with AddParm("MenuItemSeqNum", …); otherwise retrieve all grants (SQL-027). (BR-MENU-001; table MENU_SECURITY)
  3. AfterRetrieve loads one clsMenuSecurity per row. This collection is the lazily-loaded SecurityGroups child of clsMenuItem.

Process flow

flowchart TD
    Start([clsMenuItem.SecurityGroups accessed / GetMenuSecuritiesForItem called]) --> Choice{MenuItemSeqNum > 0?}
    Choice -->|Yes| ByItem["RetrieveForItemSQL: WHERE MENU_ITEM_SEQ_NUM = :MenuItemSeqNum"]
    Choice -->|No| All[Unfiltered: retrieve all security grants]
    ByItem --> Load[AfterRetrieve: Load each clsMenuSecurity]
    All --> Load
    Load --> Done([Return populated collection])

Failure and edge-case behavior

  • No security grants recorded for the item: an empty collection is returned, meaning the item is unsecured for all users.

Sources

  • SAIF.Business.Menu/clsMenuSecurityCollection.vb
  • SAIF.Business.Menu/clsMenuItem.vb