Personal Settings & Notification Preferences
Personal Settings & Notification Preferences
The Personal Settings page gives every user a self-service hub to manage their own profile, security, and notification preferences without requiring admin intervention.
URL: /dashboard/personal-settings
Sections
1. Edit Profile
Update your display name and avatar photo directly from the dashboard.
- Display name — editable free-text field.
- Avatar — upload a new photo using the standard file upload component.
- Email address — read-only. Email is managed by the OIDC identity provider and cannot be changed here.
Changes are saved immediately on form submission and are reflected across the application. Profile updates are recorded in the audit log.
2. Password & Security
Because the platform uses OIDC-based authentication (SaaS Factory Auth), passwords are managed externally by the identity provider.
This section explains that limitation clearly and provides a Manage Password button that opens the OIDC account management page in a new tab.
No password changes can be made from within the application itself.
3. Notification Preferences
Control which events trigger notifications and through which channels.
Channels
| Channel | Description |
|---|---|
| Sends a notification to your registered email address | |
| In-App | Displays a notification inside the dashboard |
Notification Categories
| Category | Trigger |
|---|---|
| Task Assignments | A task or todo is assigned to you |
| Offer Status Changes | An offer you manage changes status |
| Renewal Alerts | An upcoming renewal deadline or decision is approaching |
| Compliance Warnings | A compliance document is expiring or a certificate is overdue |
Each category has an independent toggle for Email and In-App, giving you eight individual on/off controls in total.
Defaults
All eight preferences default to enabled when your account first accesses the settings page. A database record is created automatically on first access — no manual setup is needed.
Saving Changes
Preferences are not saved automatically. After making changes:
- An "You have unsaved changes" indicator appears next to the save button.
- Click Save Preferences to persist the changes.
- A success toast confirms the save. The indicator disappears.
Preference updates are recorded in the audit log.
These settings are personal — they only affect your account and do not change company-wide notification configuration.
Audit Logging
The following actions are logged to auditLog automatically:
- Profile field updates (display name, avatar)
- Notification preference saves
Technical Reference
tRPC Router: personalSettings
The personalSettings router is registered at the application root and exposes the following procedures:
| Procedure | Type | Description |
|---|---|---|
getProfile | Query | Returns the current user's profile data |
updateProfile | Mutation | Updates display name and/or avatar URL |
getPasswordManagementInfo | Query | Returns the OIDC account URL and explanatory message |
getNotificationPreferences | Query | Returns all 8 preference flags for the current user |
updateNotificationPreferences | Mutation | Persists all 8 preference flags (upsert) |
Database Table: user_notification_preferences
Defined in src/db/user-notification-preferences-schema.ts and re-exported from src/db/schema.ts.
Columns:
| Column | Type | Default |
|---|---|---|
userId | string (FK) | — |
taskAssignmentEmail | boolean | true |
taskAssignmentInApp | boolean | true |
offerStatusEmail | boolean | true |
offerStatusInApp | boolean | true |
renewalAlertEmail | boolean | true |
renewalAlertInApp | boolean | true |
complianceWarningEmail | boolean | true |
complianceWarningInApp | boolean | true |
Rows are created via upsert on first access — existing users are not affected until they visit the page.