---
title: clsMenuSecurityUser
summary: API reference for clsMenuSecurityUser.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Business.Menu
reference_type: package
---

# clsMenuSecurityUser

Represents one user's membership (`MENU_SECURITY_USER`) in a named security group, joined against `clsMenuSecurity.SecurityGroup` (case-insensitively) during authorization resolution ([BR-MENU-002](../../business-rules.md#br-menu-002-group-granted-authorization), [BR-MENU-003](../../business-rules.md#br-menu-003-case-insensitive-group-matching)). This is the sole mechanism by which a user gains group-granted menu access — the library has no AD/attribute-based authorization.

## Purpose
- Owns the identity of one user-to-security-group membership row, persisted to [MENU_SECURITY_USER](../../database-tables.md#menu_security_user).
- Its key is obtained inline via `MENU_SECURITY_USER_SEQ.NEXTVAL` at insert time rather than through a separate next-value call ([BR-MENU-014](../../business-rules.md#br-menu-014-sequence-assigned-identity)).

## Context
- Namespace: `SAIF.Business.Menu`
- Assembly/package: `SAIF.Business.Menu` (`SAIF.BOF.Presentation.Web.Infragistics111` NuGet package)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| MenuSecurityUserSeq | `Property MenuSecurityUserSeq As Decimal` | Server-assigned surrogate key, obtained inline via `MENU_SECURITY_USER_SEQ.NEXTVAL` on insert ([BR-MENU-014](../../business-rules.md#br-menu-014-sequence-assigned-identity)). |
| SecurityGroupTxt | `Property SecurityGroupTxt As String` | The security-group name this user belongs to; matched case-insensitively against `clsMenuSecurity.SecurityGroup` ([BR-MENU-003](../../business-rules.md#br-menu-003-case-insensitive-group-matching)). |
| MenuUser | `Property MenuUser As String` | The account name whose group membership this row records; the pseudo-value `UNSECURED` is treated specially by `clsMenuAuthorizedItemCollection`'s membership test ([BR-MENU-025](../../business-rules.md#br-menu-025-unsecured-pseudo-user-membership)). |
| MenuUserID | `Property MenuUserID As String` | Employee ID carried alongside the membership; not used in any authorization predicate. |
| NewMenuSecurityUser | `Shared Function NewMenuSecurityUser(dpi As IDataPortalInfo) As clsMenuSecurityUser` | Factory that creates a new membership row ready for `Save` ([BR-MENU-014](../../business-rules.md#br-menu-014-sequence-assigned-identity)). |
| Save | `Sub Save()` | Persists the object via insert or update depending on new/dirty state ([BR-MENU-016](../../business-rules.md#br-menu-016-audit-stamp-on-insert-and-update), [BR-MENU-018](../../business-rules.md#br-menu-018-save-only-when-dirty)). |
| Delete | `Sub Delete()` | Removes the row and returns the object to a new, unsaved state ([BR-MENU-022](../../business-rules.md#br-menu-022-delete-returns-object-to-new-state)); the user immediately loses the group's granted items. |

## Inherited public members

Members in this section are inherited from `clsBusinessBase` in `SAIF.Framework.Core` (delivered by the `SAIF.BOF.Framework` package). They are available on this type through inheritance.

| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| Rules | `ReadOnly Property Rules As clsRulesManager` | Exposes the object's rule manager, used to register and evaluate validation rules.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| BeginEdit | `Sub BeginEdit()` | Begins an editable transaction on the object, snapshotting current state for a later cancel.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| CancelEdit | `Sub CancelEdit()` | Reverts the object to the state captured by the most recent `BeginEdit`.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| ApplyEdit | `Sub ApplyEdit()` | Commits the in-progress edit, discarding the `BeginEdit` snapshot.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| SetPreviousLink | `Sub SetPreviousLink(item As ILinkItem)` | Sets the previous node in a doubly linked list of business objects.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| SetNextLink | `Sub SetNextLink(item As ILinkItem)` | Sets the next node in a doubly linked list of business objects.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| InsertLinkAfter | `Sub InsertLinkAfter(item As ILinkItem)` | Inserts the given item immediately after this object in a linked sequence.† | `SAIF.Framework.Core` — `clsBusinessBase` |

## Related documentation
- [Index](../../index.md)
- [Overview](../../overview.md)
- [Architecture](../../architecture.md)
- [Operations and processes](../../operations-processes.md)
- [Business rules](../../business-rules.md)
- [Database tables](../../database-tables.md)
- [API reference](../index.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with `†` were retrieved from dependency library documentation via the Legends CLI RAG service. They describe inherited behavior from the indicated origin library and should be verified if the dependency version changes.

## Sources
- SAIF.Business.Menu/clsMenuSecurityUser.vb
