Files
slp-modular-cms/aidlc-docs/features/cms-frontend/construction/unit-6/functional-design/domain-entities.md
T

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
email 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
email 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
email 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