---
title: clsPolicyHeaderSecurityManager
summary: API reference for clsPolicyHeaderSecurityManager.
status: draft
owner: SAIF Documentation Generation
last_reviewed: 2026-07-31
library: SAIF.Application.Policy
reference_type: package
---

# clsPolicyHeaderSecurityManager

`clsPolicyHeaderSecurityManager` is the policy-header security helper that determines which association types and association rows a principal may see. It owns the library's process-wide association-type and user-number caches and applies the row-level ownership filters used by the standard header provider.

## Purpose
- Compute the association types available to the current principal.
- Filter header association rows for policyholder and agent ownership scenarios.

## Context
- Namespace: `SAIF.Application.Policy.PolicyHeader`
- Assembly/package: `SAIF.Application.Policy`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `GetValidAssociationTypes` | `Shared ReadOnly Property GetValidAssociationTypes(ByVal inDPI As IDataPortalInfo, ByVal inSecurityPrincipal As clsSecurityPrincipal) As IEnumerable(Of IPolicyAssociationType)` | Returns the association types the principal is authorized to see. |
| `FilterAssociationsByUserType` | `Shared Function FilterAssociationsByUserType(ByVal inAssociations As IEnumerable(Of IPolicyHeaderAssociation), ByVal inSecurityPrincipal As clsSecurityPrincipal) As IEnumerable(Of IPolicyHeaderAssociation)` | Filters header association rows for policyholder and agent ownership rules. |

## Behavioral notes
- The type caches the full association-type list and resolved user numbers in `Shared` fields.
- Ownership filtering applies only to policyholders and agents; all other user types keep the incoming rows.

## Constraints and usage notes
- A non-numeric user number raises an exception rather than returning an unfiltered set.

## Sources
- `Application\SAIF.Application.Policy\PolicyHeader\clsPolicyHeaderSecurityManager.vb`
