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.GetMembersByResourcehas no explicit error handling; WCFFaultException/CommunicationExceptionpropagate to the caller.MachineSecurityService.IsAuthorizedcatches any exception internally, writes it toDebug.WriteLine, and swallows it — an explicit fail-closed behavior wherefoundremainsfalseand no exception propagates to the caller.EnvironmentServiceBase.IsDeveloperMachineshort-circuits tofalsewith no AD call at all when the hostname does not match the tag-number pattern.SecurityApiClient.GetUser/IsAuthorizedthrowArgumentException/ArgumentNullExceptionbefore any network call when thedomain\usernameformat is invalid.FluentValidationService.Validate<T>(T)always additionally executes the"AuthorizationRules"rule set but discards its result — see BR-CORE-11.
Related documentation¶
- Index
- Overview
- Architecture
- Dependencies
- Configuration
- Business rules
- Security and authorization
- API reference
Sources¶
Services\SecurityGroupService.csCore\Services\MachineSecurityService.csCore\Services\ADService.csServices.Common\EnvironmentServiceBase.csServices\Utilities\Documents\PdfConvertAndMergeService.csServices\Utilities\SecurityApiClient.csServices\Utilities\FluentValidationService.csServices\Utilities\Documents\FaxService.csServices\ServiceRegistrations.cs