# Auth Domain Handles user authentication (login and registration) against the configured server endpoint. Provides the login, register, and user-bar UI components. ## Module map ``` auth/ ├── application/ │ └── auth.service.ts HTTP login/register against the active server endpoint │ ├── feature/ │ ├── login/ Login form component │ ├── register/ Registration form component │ └── user-bar/ Displays current user or login/register links │ └── index.ts Barrel exports ``` ## Service overview `AuthService` resolves the API base URL from `ServerDirectoryFacade`, then makes POST requests for login and registration. It does not hold session state itself; after a successful login the calling component stores `currentUserId` in localStorage and dispatches `UsersActions.setCurrentUser` into the NgRx store. ```mermaid graph TD Login[LoginComponent] Register[RegisterComponent] UserBar[UserBarComponent] Auth[AuthService] SD[ServerDirectoryFacade] Store[NgRx Store] Login --> Auth Register --> Auth UserBar --> Store Auth --> SD Login --> Store click Auth "application/auth.service.ts" "HTTP login/register" click Login "feature/login/" "Login form" click Register "feature/register/" "Registration form" click UserBar "feature/user-bar/" "Current user display" click SD "../server-directory/application/server-directory.facade.ts" "Resolves API URL" ``` ## Login flow ```mermaid sequenceDiagram participant User participant Login as LoginComponent participant Auth as AuthService participant SD as ServerDirectoryFacade participant API as Server API participant Store as NgRx Store User->>Login: Submit credentials Login->>Auth: login(username, password) Auth->>SD: getApiBaseUrl() SD-->>Auth: https://server/api Auth->>API: POST /api/auth/login API-->>Auth: { userId, displayName } Auth-->>Login: success Login->>Store: UsersActions.setCurrentUser Login->>Login: localStorage.setItem(currentUserId) ``` ## Registration flow Registration follows the same pattern but posts to `/api/auth/register` with an additional `displayName` field. On success the user is treated as logged in and the same store dispatch happens. ## User bar `UserBarComponent` reads the current user from the NgRx store. When logged in it shows the user's display name; when not logged in it shows links to the login and register views.