3.9 KiB
Domain Entities — Unit 6: Profile, Settings & CMS Placeholder
Overview
Unit 6 introduces profile editing and password management. It reuses the existing AvailabilityStatus entity from Unit 4 for the Settings page, and introduces new request/response shapes for profile and password operations.
Entity Diagram
graph TD
AuthUser["AuthUser"]
UpdateProfileRequest["UpdateProfileRequest"]
UpdateProfileResponse["UpdateProfileResponse"]
ChangePasswordRequest["ChangePasswordRequest"]
AvailabilityStatus["AvailabilityStatus"]
UpdateAvailabilityRequest["UpdateAvailabilityRequest"]
AuthUser -->|"provides data for"| UpdateProfileRequest
UpdateProfileRequest -->|"produces"| UpdateProfileResponse
UpdateProfileResponse -->|"refreshed into"| AuthUser
AvailabilityStatus -->|"changed by"| UpdateAvailabilityRequest
classDef user fill:#2196F3,stroke:#0d47a1,color:#000
classDef request fill:#FF9800,stroke:#e65100,color:#000
classDef response fill:#4CAF50,stroke:#2e7d32,color:#000
classDef availability fill:#9C27B0,stroke:#4a148c,color:#000
class AuthUser user
class UpdateProfileRequest,ChangePasswordRequest,UpdateAvailabilityRequest request
class UpdateProfileResponse response
class AvailabilityStatus availability
Text alternative: AuthUser provides data for UpdateProfileRequest; saving produces UpdateProfileResponse which refreshes AuthContext. AvailabilityStatus is changed via UpdateAvailabilityRequest. ChangePasswordRequest is standalone.
Entity Descriptions
AuthUser
Represents the currently logged-in user. Sourced from AuthContext (populated at login and after token refresh). Displayed on ProfilePage; updated indirectly via token refresh after a profile save.
| Field | Type | Editable | Source |
|---|---|---|---|
| id | string (GUID) | No | AuthContext |
| string | Yes (via PUT /Users/me) | AuthContext | |
| name | string | Yes (via PUT /Users/me) | AuthContext |
| role | string | No (read-only) | AuthContext |
| isActive | boolean | No | AuthContext |
UpdateProfileRequest
Sent to PUT /api/v1/Users/me when the user saves their profile edits.
| Field | Type | Required | Validation |
|---|---|---|---|
| name | string | Yes | Non-empty, max 100 chars |
| string | Yes | Valid email format |
UpdateProfileResponse
Response from PUT /api/v1/Users/me. Contains the updated user data. After receiving this, the frontend calls POST /api/v1/Auth/refresh to sync AuthContext with the new values.
| Field | Type | Notes |
|---|---|---|
| id | string | GUID |
| string | Updated value | |
| name | string | Updated value |
| role | string | Unchanged |
| isActive | boolean | Unchanged |
ChangePasswordRequest
Sent to POST /api/v1/Auth/change-password. Requires current password for verification.
| Field | Type | Required | Validation |
|---|---|---|---|
| currentPassword | string | Yes | Must match current stored password |
| newPassword | string | Yes | Must satisfy backend password policy (≥8 chars, upper, lower, digit, special char) |
AvailabilityStatus (reused from Unit 4)
Retrieved via GET /api/v1/Availability/status. Displayed on SettingsPage with controls to change it.
| Field | Type | Notes |
|---|---|---|
| status | string | "Available" | "Maintenance" | "Unavailable" |
| message | string | Optional custom message |
| checkedAt | datetime | Timestamp of last check |
UpdateAvailabilityRequest
Sent to POST /api/v1/Availability/admin/status (OwnerOnly policy — already exists in backend).
| Field | Type | Required | Allowed values |
|---|---|---|---|
| newStatus | string | Yes | "Available" | "Maintenance" | "Unavailable" |
| reason | string | No | Free-form message shown to users |