SQL-016: Retrieve authorized menu items for all users¶
This statement is the RetrieveAllSQL implementation of clsMenuAuthorizedItemCollection.Criteria, executed from BeforeRetrieve against MENU_ITEM, MENU_SECURITY, MENU_SECURITY_USER, MENU_PAGE, BUSONLINE_APPS_CODE, MENU_CATEGORY_CODE. Retrieve authorized menu items for all users.
Classification¶
| Field | Value |
|---|---|
| SQL ID | SQL-016 |
| Operation type | Read |
| Execution method | StringBuilder-assembled |
| Database | Oracle |
| Schema | [unqualified]** |
| Command type | Text |
| Business object | clsMenuAuthorizedItemCollection |
| Criteria property | RetrieveAllSQL |
| Lifecycle method | BeforeRetrieve |
Parameters¶
This statement takes no bind parameters.
Tables¶
| Table | Access | Columns used |
|---|---|---|
| MENU_ITEM | SELECT | MENU_ITEM_SEQ_NUM, PAGE_ORDER_NUM, MENU_CATEGORY_CODE, TOOL_TIP_TXT, VISIBLE_FLAG |
| MENU_SECURITY | SELECT / JOIN | MENU_ITEM_SEQ_NUM, SECURITY_GROUP_TXT (join / NOT EXISTS) |
| MENU_SECURITY_USER | SELECT / JOIN | MENU_USER, SECURITY_GROUP_TXT, MENU_USER_EMPLID |
| MENU_PAGE | SELECT / JOIN | MENU_PAGE_SEQ_NUM, PAGE_NAME, PAGE_LINK_TXT, APPLICATION_CODE, toolbar flags/tips |
| BUSONLINE_APPS_CODE | SELECT / JOIN | CODE, CODE_DESCR (application path) |
| MENU_CATEGORY_CODE | SELECT / JOIN | CODE, CODE_DESCR (category) |
Sample SQL¶
-- Retrieve authorized menu items for all users
SELECT DISTINCT
ITM.MENU_ITEM_SEQ_NUM AS MenuItemSeqNum,
USR.MENU_USER AS MenuUser,
ITM.PAGE_ORDER_NUM AS MenuOrder,
'N' AS FavoriteFlag,
USR.MENU_USER_EMPLID AS MenuUserEmplid,
ITM.MENU_CATEGORY_CODE AS MenuCategoryCode,
CAT.CODE_DESCR AS Category,
ITM.TOOL_TIP_TXT AS ToolTip,
ITM.VISIBLE_FLAG AS VisibleFlag,
PAG.MENU_PAGE_SEQ_NUM AS MenuPageSeqNum,
PAG.PAGE_NAME AS PageName,
PAG.PAGE_LINK_TXT AS PageLink,
PAG.APPLICATION_CODE AS ApplicationCode,
APP.CODE_DESCR AS ApplicationPath,
PAG.FAVORITE_NAME AS FavoriteName,
PAG.SAVE_PREFERENCES_FLAG AS SavePreferencesFlag,
PAG.PRINT_FLAG AS PrintFlag,
PAG.DOWNLOAD_FLAG AS DownloadFlag,
PAG.HELP_FLAG AS HelpFlag,
PAG.SAVE_FLAG AS SaveFlag,
PAG.INSERT_FLAG AS InsertFlag,
PAG.DELETE_FLAG AS DeleteFlag,
PAG.PRINT_TIP_TXT AS PrintTip,
PAG.DOWNLOAD_TIP_TXT AS DownloadTip,
PAG.SAVE_TOOLTIP_TXT AS SaveTip,
PAG.DELETE_TOOLTIP_TXT AS DeleteTip,
PAG.INSERT_TOOLTIP_TXT AS InsertTip,
'N' as UnsecuredFlag
FROM
menu_item itm,
menu_security sec,
menu_security_user usr,
MENU_PAGE PAG,
BUSONLINE_APPS_CODE app,
MENU_CATEGORY_CODE cat
WHERE
SEC.MENU_ITEM_SEQ_NUM = ITM.MENU_ITEM_SEQ_NUM
AND PAG.MENU_PAGE_SEQ_NUM = ITM.MENU_PAGE_SEQ_NUM
AND APP.CODE = PAG.APPLICATION_CODE
AND CAT.CODE = ITM.MENU_CATEGORY_CODE
AND upper(USR.SECURITY_GROUP_TXT) = upper(SEC.SECURITY_GROUP_TXT)
UNION
SELECT
ITM.MENU_ITEM_SEQ_NUM AS MenuItemSeqNum,
'UNSECURED' AS MenuUser,
ITM.PAGE_ORDER_NUM AS MenuOrder,
'N' AS FavoriteFlag,
NULL AS MenuUserEmplid,
ITM.MENU_CATEGORY_CODE AS MenuCategoryCode,
CAT.CODE_DESCR AS Category,
ITM.TOOL_TIP_TXT AS ToolTip,
ITM.VISIBLE_FLAG AS VisibleFlag,
PAG.MENU_PAGE_SEQ_NUM AS MenuPageSeqNum,
PAG.PAGE_NAME AS PageName,
PAG.PAGE_LINK_TXT AS PageLink,
PAG.APPLICATION_CODE AS ApplicationCode,
APP.CODE_DESCR AS ApplicationPath,
PAG.FAVORITE_NAME AS FavoriteName,
PAG.SAVE_PREFERENCES_FLAG AS SavePreferencesFlag,
PAG.PRINT_FLAG AS PrintFlag,
PAG.DOWNLOAD_FLAG AS DownloadFlag,
PAG.HELP_FLAG AS HelpFlag,
PAG.SAVE_FLAG AS SaveFlag,
PAG.INSERT_FLAG AS InsertFlag,
PAG.DELETE_FLAG AS DeleteFlag,
PAG.PRINT_TIP_TXT AS PrintTip,
PAG.DOWNLOAD_TIP_TXT AS DownloadTip,
PAG.SAVE_TOOLTIP_TXT AS SaveTip,
PAG.DELETE_TOOLTIP_TXT AS DeleteTip,
PAG.INSERT_TOOLTIP_TXT AS InsertTip,
'Y' as UnsecuredFlag
FROM
menu_item itm,
MENU_PAGE PAG,
BUSONLINE_APPS_CODE app,
MENU_CATEGORY_CODE cat
WHERE
PAG.MENU_PAGE_SEQ_NUM = ITM.MENU_PAGE_SEQ_NUM
AND APP.CODE = PAG.APPLICATION_CODE
AND CAT.CODE = ITM.MENU_CATEGORY_CODE
AND NOT EXISTS (SELECT 1 FROM menu_security SEC
WHERE SEC.MENU_ITEM_SEQ_NUM = ITM.MENU_ITEM_SEQ_NUM)
Operations and processes¶
Business rules¶
- BR-MENU-001: Scoped vs. unfiltered retrieval
- BR-MENU-002: Group-granted authorization
- BR-MENU-003: Case-insensitive group matching
- BR-MENU-004: Unsecured items open to all
- BR-MENU-025: UNSECURED pseudo-user membership
Note: Statements marked with
**could not be confirmed; treat as unknown until verified.
Sources¶
- SAIF.Business.Menu/clsMenuAuthorizedItemCollection.vb