Skip to content

SAIF.Framework.Core operations and processes

This page is the operation catalog and cross-operation hub for this library. Each operation's detailed, step-by-step logic lives in its own page under operations/.

Operation catalog

Operation Intent Trigger Inputs Outputs Rules
SecurityGroupService.GetMembersByResource Resolve the AD member list for an authorization "resource" (AD group) Consuming application needs the member list for an authorization resource resourceName, optional ldap/domain, recurse, includeDisabled string[] of member usernames BR-CORE-01
MachineSecurityService.IsAuthorized Determine whether a machine account is a member of an AD authorization group Called by EnvironmentServiceBase.IsDeveloperMachine and any consumer needing to authorize a machine account machine (SAM account name), groupName (ref), isResource, isProductionResource, recurse bool BR-CORE-02
EnvironmentServiceBase.IsDeveloperMachine Gate developer-only configuration behavior based on hostname and AD group membership Read by numerous callers deciding whether developer-only overrides apply (none — reads local hostname) bool (cached per instance) BR-CORE-03
EnvironmentServiceBase.GetConfigSettingInfo Resolve a configuration key through layered precedence (developer override → cache → Environment API) Every IEnvironmentService.GetConfigSetting(...) invocation configKey Resolved ConfigSetting value BR-CORE-04
PdfConvertAndMergeService.ConvertAysnc / MergeAysnc Schedule a file for conversion or merge by the external activePDF-hosted process Application requests PDF conversion or merge Raw file bytes/name or MergeFileItem list, applicationCode, optional sourceSystemId/ImageConfig PdfTrackingResult (tracking id, optional reserved image id) —
SecurityApiClient.GetUser / IsAuthorized Retrieve a user profile or authorization decision from the REST Security API Consumer needs a user profile or authorization decision via REST domainUsername or username+role UserProfile or bool BR-CORE-05, BR-CORE-06, BR-CORE-12
FluentValidationService.Validate / ValidateAndThrow Validate a DTO/entity against its FluentValidation rules, plus the authorization rule set Any consumer needing to validate a DTO/entity Entity instance of type T ValidationResult (or exception via ValidateAndThrow) BR-CORE-11
FaxService.SendFax Validate and submit a fax job Application requests a fax be sent FaxConfig (file, recipients) Validation result / fax submission BR-CORE-07, BR-CORE-08, BR-CORE-09, BR-CORE-10
ServiceRegistrations.RegisterCoreServicesForWeb / RegisterCoreServicesForWindows Wire this library's platform services into a consuming application's Autofac container Called once at application startup ContainerBuilder, optional currentUserId (Windows) Populated ContainerBuilder registrations —

Process flow diagram

The following diagram visualizes the primary authorization-resolution flow spanning several of the operations above.

flowchart TD
    Start([Caller requests AD resource members]) --> GetMembers[SecurityGroupService.GetMembersByResource]
    GetMembers --> Normalize[Normalize Resource/TestResource suffix]
    Normalize --> WCFCall[SecurityServiceClient.GetUsersByGroup]
    WCFCall --> EndOk([Return member usernames])

    StartDev([Any GetConfigSetting call]) --> DevCheck{IsDeveloperMachine?}
    DevCheck -->|check hostname pattern| TagCheck{Hostname matches T/V + digits?}
    TagCheck -->|No| NotDev([Not a developer machine])
    TagCheck -->|Yes| MachineAuth[MachineSecurityService.IsAuthorized]
    MachineAuth --> ADLookup[ADService.GetUsersByGroup]
    ADLookup --> DevResult([Developer machine true/false])

Database interactions

No database interactions were identified for the operations on this page — see Configuration for the two generic database-connection resolutions (DbConnectionManager) that are configuration/connection-string concerns, not SQL operations, and Dependencies for the one repository-based usage pattern (PdfConvertAndMergeService) that reads/writes PDFTracking/PDFApplicationErrorCode/PDFTrackingCode/PDFStatusCode through the generic IUnitOfWork/IRepository<T> abstraction with no SQL text authored in this library.

Failure and edge-case behavior

  • SecurityGroupService.GetMembersByResource has no explicit error handling; WCF FaultException/CommunicationException propagate to the caller.
  • MachineSecurityService.IsAuthorized catches any exception internally, writes it to Debug.WriteLine, and swallows it — an explicit fail-closed behavior where found remains false and no exception propagates to the caller.
  • EnvironmentServiceBase.IsDeveloperMachine short-circuits to false with no AD call at all when the hostname does not match the tag-number pattern.
  • SecurityApiClient.GetUser/IsAuthorized throw ArgumentException/ArgumentNullException before any network call when the domain\username format is invalid.
  • FluentValidationService.Validate<T>(T) always additionally executes the "AuthorizationRules" rule set but discards its result — see BR-CORE-11.

Sources

  • Services\SecurityGroupService.cs
  • Core\Services\MachineSecurityService.cs
  • Core\Services\ADService.cs
  • Services.Common\EnvironmentServiceBase.cs
  • Services\Utilities\Documents\PdfConvertAndMergeService.cs
  • Services\Utilities\SecurityApiClient.cs
  • Services\Utilities\FluentValidationService.cs
  • Services\Utilities\Documents\FaxService.cs
  • Services\ServiceRegistrations.cs