Skip to main content

Security Model

Source: app_sec library (user/security maintenance screens), homersys (n_system_menu_security menu filtering), function f_check_group_security, and the security_* tables.

Concepts

TableRole
security_usersApplication users (name, description, user_type, priority). Users are Oracle accounts (login is a DB connection; dddw_new_oracle_users picks from all_users).
security_user_classRoles ("user classes") with descriptions.
security_user_class_userUser ↔ class membership.
security_user_groupData-level security: which employer groups a user class may work with.
security_db_role / security_users_db_roleOracle database roles granted per user.
security_menu_optionsFunction-level security: per menu entry, a setting for a name that is either a user or a class (name_type), layered app-default → class → user.
system_menuThe navigable function tree: menu caption, window_to_open, parameter, display_order, sys_menu_option.
security_apps, security_template, security_infoWindow/control-level security templates (per application, window, control).
security_groupingsUser grouping (departments) for worklists/assignment.

Requirements

  • SEC-1 — Users authenticate as individual Oracle database accounts; the application opens its DB connection with the user's credentials (n_cst_sfpiappmanager logon; user maintenance creates Oracle users — app_sec/w_new_user, dddw_new_oracle_users). A replacement must provide individual authenticated identities with per-user audit attribution, though not necessarily via database accounts.
  • SEC-2 — Access to functions is role-based: the function tree (system_menu) is filtered per user by layered settings — application default, then user-class setting, then per-user override (n_system_menu_security.of_applymenusecurity, security_menu_options.name_type).
  • SEC-3 — Access to data is restricted by employer group: a user may only work with groups mapped to one of their user classes (f_check_group_security: security_user_class_usersecurity_user_group on user_class, filtered by USER and group_id).
  • SEC-4 — Screen-level restrictions can disable/hide individual windows and controls per application via security templates (security_template, security_info).
  • SEC-5 — Security administration screens exist for: user creation (including the underlying account), class membership, class↔group assignment, department groups, supervisor assignment, and security reports (functions by user, users by function, object security) — app_sec/w_user_maint, w_user_assignment, w_user_dept_group, w_user_supervisor_edit, w_sec_report1.

Screens (app_sec library)

WindowPurpose
app_sec/w_maint_securityMain security maintenance — create and maintain user security for the application (function/menu settings per user or class, via d_security_menu_options).
app_sec/w_user_info_maint_selection / app_sec/w_user_info_editUser profile list and editor (demographics, department, supervisor, location; DataWindows d_user_info_selection, d_user_info_edit).
app_sec/w_user_maint, app_sec/w_new_userUser account creation/maintenance, including the underlying Oracle account and role grants (SEC-1, SEC-5).
app_sec/w_user_assignment / app_sec/w_user_assignment_errorAssign users to classes/groups via wizard; the error window lists conflicting user-group assignments detected during assignment.
app_sec/w_cust_group_secMaintain customer-group security — which employer groups a user class may access (security_user_group, SEC-3).
app_sec/w_user_dept_groupDepartment-group membership maintenance (security_groupings).
app_sec/w_user_supervisor_editSupervisor assignment per user.
app_sec/w_sec_report1, app_sec/w_system_menu_securitySecurity reports (functions by user, users by function, object security) and menu-security review.
Open question

The live contents of system_menu, security_user_class, and security_menu_options define the actual production function tree and role matrix. Export them before designing the replacement's role model (OQ-1 in Migration Considerations).