Skip to content

Self-service account management and public profiles - #51

Merged
YonatanHen merged 3 commits into
stagingfrom
dev/user-account-management
Aug 1, 2026
Merged

Self-service account management and public profiles#51
YonatanHen merged 3 commits into
stagingfrom
dev/user-account-management

Conversation

@YonatanHen

Copy link
Copy Markdown
Owner

Summary

  • Extends the already-shipped PATCH/DELETE /api/v1/users/:id API with username and email editing, current-password verification before a password change, OAuth accounts setting an initial password, and cascade-deleting a user's posts/comments/likes on account deletion.
  • Adds the client side that never existed for this API: /account (self, editable) and /users/:id (anyone, read-only), reached by making every username byline in the app clickable.
  • Fixes a real bug found in manual testing: password fields were plain-text inputs showing the value in the clear, and the shared AutoForm rendered raw camelCase schema keys as labels (e.g. currentPassword). Adds a shared PasswordInput with a show/hide toggle used on login, signup, and account update/delete, and humanizes AutoForm's labels.

Test plan

  • npm run test — 475 passing (server + client)
  • Manual pass via docker compose watch: account edit (username/email/bio/password), OAuth-account password set, account deletion with cascade, public profile view
  • E2E (Playwright) — not run locally (Docker build blocked by local Avast TLS interception); will run in CI on this PR

Extends the already-shipped PATCH/DELETE /api/v1/users/:id API with
username and email editing, current-password verification before a
password change, OAuth accounts setting an initial password, and
cascade-deleting a user's posts/comments/likes on account deletion.
Deletion requires re-entering the password (or, for OAuth-only
accounts, typing the username) as confirmation.

Adds the client side that never existed for this API: /account
(self, editable) and /users/:id (anyone, read-only), reached by
making every username byline in the app clickable.
Password fields (login, signup, account update/delete) were plain
text inputs showing the value in the clear, and AutoForm rendered
labels as raw camelCase schema keys (e.g. "currentPassword"). Adds a
shared PasswordInput with a show/hide toggle used everywhere a
password is entered, and humanizes AutoForm's field labels.
ChatRoom.test.tsx's render wrapper was typed as typeof rtlRender,
whose generic overloads don't survive a plain arrow-function
assignment. Typed it explicitly against ReactElement/RenderOptions
instead. The cascade-delete test's postService.create calls were
missing tags, required by CreatePost's inferred (post-default) type
even though the schema defaults it at parse time.
@YonatanHen
YonatanHen merged commit 48a680f into staging Aug 1, 2026
5 checks passed
@YonatanHen
YonatanHen deleted the dev/user-account-management branch August 1, 2026 11:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant