# Auth

## What it is responsible for

Auth manages authentication-related state and request data for the Outlook plugin, centering `Auth`, `PamsAuthResponse`, and `AuthData`. It turns stored authentication into request headers through `getStoredAuth`, `requestHeaderWithAccessToken`, and `requestHeaderForOneDrive`. It also decides logout timing with `isTimeToLogout` and handles status messages through `showStatusMessage` and `hideStatusMessage`.

## What it needs, and who needs it

Auth needs the `Attachement` and `Pams` subsystems, its declared dependencies, for operations named `checkIfAttachmentExist` and `generateLinkToPams`. Without Auth, the dependent `account`, `Activity`, `Attachement`, `Calendar`, `Contacts`, and `taskpane` areas lose their declared source for authentication symbols, request headers, logout timing, and identity helpers including `getUserShortName` and `generateIdFromEmail`. The evidence does not specify exact call paths or the failure effects for each consuming area, or identify which individual members each consumer invokes during normal operation at runtime.

22 entities in `Outlook_plugin/src/auth`. **6 other subsystems depend on it**, which makes it the 2nd most depended-upon part of this codebase.

## What it is made of

Its 22 entities sit in 2 files under `Outlook_plugin/src/auth`: 13 functions, 4 constants, 3 interfaces, 1 service and 1 more.
`auth.service.ts` holds 18 of them — more than any other file here.

## Where work enters

- [`Auth`](service-auth) — `Outlook_plugin/src/auth/auth.service.ts`:1
- [`PamsAuthResponse`](interface-pamsauthresponse) — `Outlook_plugin/src/auth/auth.model.ts`:1
- [`Person`](class-person-9) — `Outlook_plugin/src/auth/auth.model.ts`:29
- [`serverUrl`](constant-serverurl) — `Outlook_plugin/src/auth/auth.service.ts`:9

## Boundaries

**6 other subsystems depend on this one** — `Account`, `Activity`, `Attachement`, `Calendar`, `Contacts`, `Taskpane`. Changing what it exposes changes them.

Those 6 hold 46 edges between them, unevenly: `Taskpane` reaches in across 18 edges, against 2 from `Account`. 46 edges arrive against 6 leaving — more of this repository reaches into it than it reaches out to. What they reach is narrower than the folder: 20 of its 22 members carry every inbound edge — `requestHeaderWithAccessToken` (9), `serverUrl` (9) and `showStatusMessage` (5), plus 17 more. Of the 6 it sends out, 4 go to `Pams` — more than to any other.

It depends on `Attachement`, `Pams`, and on nothing else in this repository.
