Skip to content

ClaimSecurity

ClaimSecurity is the per-claim confidentiality evaluator: it combines a claim's sensitivity attributes (worker-conflict, exposure, health-issue, hostile-worker) with the current user's AD resource membership into four independent boolean access flags. It implements a fail-open model — every flag defaults to True and is denied only when a claim explicitly triggers the corresponding sensitivity attribute and the user lacks the matching resource.

Purpose

  • Recomputes the four claim-confidentiality access flags for a specific claim via CheckClaim (BR-CLM-007, BR-CLM-008, BR-CLM-009, BR-CLM-010).
  • Owns the underlying ClaimUserAccess accessor used to resolve AD resource membership for the current user.
  • Consumed by ClaimAppManager.OnCheckSecurity (which enforces only the conflict flag) and by SAIF.Application.Claim.Legal/LegalManagerBase.vb/clsCaseSearchManager.vb, which re-test the exposure flag themselves.

Context

  • Namespace: SAIF.Application.Claim
  • Assembly/package: SAIF.Application.Claim (embedded, ProjectReference)

Public members

Member Signature Purpose
New(inUserAccess) Public Sub New(inUserAccess As ClaimUserAccess) Binds an already-constructed AD resource accessor.
New(inPrincipal) Public Sub New(inPrincipal As clsSecurityPrincipal) Builds a ClaimUserAccess from the supplied principal and binds it.
UserAccess Public ReadOnly Property As ClaimUserAccess The underlying AD resource accessor consulted by CheckClaim.
ConflictAccess Public ReadOnly Property As Boolean False only when the claim is a worker-conflict claim and the user lacks ConflictClaim; the only flag ClaimAppManager.OnCheckSecurity enforces as a hard block (BR-CLM-007).
ExposureAccess Public ReadOnly Property As Boolean False only when the claim is an exposure claim and the user lacks ExposureClaim; enforcement is left to consumers (BR-CLM-008).
SecureClaimAccess Public ReadOnly Property As Boolean False only when the claim has a hostile worker and the user lacks SecureClaim; enforcement is left to consumers (BR-CLM-010).
HealthIssueAccess Public ReadOnly Property As Boolean False only when the claim is both a health-issue and exposure claim and the user lacks ExposureClaim; the CollateralHealthClaim resource is never consulted (BR-CLM-009).
CheckClaim(inClaim) Public Sub CheckClaim(inClaim As clsClaimData) Recomputes all four access flags against the supplied claim, resetting every flag to permissive first.

Behavioral notes

  • Only ConflictAccess is tested by ClaimAppManager.OnCheckSecurity; ExposureAccess, SecureClaimAccess, and HealthIssueAccess are computed but advisory — a consumer that does not re-test them silently bypasses those controls (BR-CLM-012).
  • Fail-open default: a claim whose sensitivity flags are all false is fully accessible to any authenticated user.
  • A private field m_HasAccessToClaim is declared and initialized to False but never read or written elsewhere — dead state.**
  • This type is <Serializable()>, so a resolved verdict can cross app-domain/session boundaries and could become stale if serialized across an AD group-membership change.*

Constraints and usage notes

  • Consumers that need to enforce exposure, hostile-worker, or health-issue restrictions (e.g. SAIF.Application.Claim.Legal/LegalManagerBase.vb) must explicitly test the corresponding flag themselves; this type does not block access on their behalf.

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 ** could not be confirmed; treat as unknown until verified.

Sources

  • SAIF.Application.Claim/ClaimSecurity.vb