Skip to content

Profile and account (backlog)

Follow-up work for user profile, authentication, and account settings beyond the v1 initials avatar, email/password auth, and development-time profile editing.

Cross-links: Identity and Access, Onboarding, Files and Uploads, Security and Privacy.

Goal: Let users upload a profile photo; store a file reference on the user record and show it in the nav and profile header (replacing or supplementing computed initials).

v1 gap: v1 uses server-computed avatarInitials and avatarColor only — no users.avatar_path column or upload UI.

Dependencies:

  • Presigned upload flow (Files and Uploads)
  • Migration: users.avatar_path (or equivalent file ID)
  • GraphQL: optional avatarUrl on User; mutation or upload-then-attach flow
  • UI: profile section for image pick/crop; UserAvatar prefers image when present

Links: Files and Uploads, profile UI in ui/src/pages/profile/.

Goal: Verify email on registration and when a user changes email via updateProfile; set email_verified_at and gate sensitive actions until verified.

v1 gap: v1 updates email immediately with uniqueness validation only — no verification mail, no blocking of unverified accounts for profile edits.

Dependencies:

  • Laravel verification notifications / mail transport
  • GraphQL or REST resend-verification endpoint
  • UI: banner on profile when unverified; optional block on email-sensitive features
  • updateProfile email change triggers re-verification flow

Links: Identity and Access — Authentication, Onboarding.

Goal: Sign in and register with Google and Apple Sign In per product intent; link/unlink social accounts; support password-less OAuth-only accounts.

v1 gap: v1 is email + password only (Sanctum SPA cookies).

Dependencies:

  • Laravel Socialite (or equivalent) + provider apps
  • Account linking/unlinking rules (email collision, merge)
  • Profile password section adapts when user has no password (OAuth-only)
  • Mobile token flow alignment

Links: Identity and Access — Authentication, Architecture.

Goal: Optional second factor for adult accounts (TOTP and/or WebAuthn — choice TBD); recovery codes; interaction with OAuth and password change.

v1 gap: No 2FA enrollment, challenge, or recovery.

Dependencies:

  • Product choice: TOTP vs WebAuthn vs both
  • Storage for secrets/credentials and recovery codes
  • Login and session upgrade flows (web + mobile)
  • Profile UI for enroll/disable/recovery

Links: Security and Privacy, Identity and Access.

Goal: After development, restrict which profile fields users may self-edit; spiritual phase changes via reassessment/mentor flows, not free self-service.

v1 gap (development): config/profile.php editable_fields includes all onboarding fields (including spiritualPhase and dateOfBirth) so testers can iterate without re-onboarding. The profile page shows a dev notice (profile.devEditableNotice).

Production direction:

FieldDev (current)Later
name, emailEditableEditable (email + verification when backlog ships)
personalityFocus, learningStyle, studyMotivationEditableTBD — likely editable with limits
spiritualPhaseEditableNot freely editable; phase promotion via dedicated flow
dateOfBirthEditableLikely read-only after onboarding

Dependencies:

  • Shrink api/config/profile.php editable_fields
  • UI: OnboardingProfileFields readOnlyFields driven from shared constants
  • Phase promotion UX per Study Methods and mentor flows
  • Mentor/church override (phase_source) when mentorship ships

Links: Identity and Access — Spiritual phase, Study Methods, api/config/profile.php.