feat(website): sync user with backend on login, use internal user ID#1202
Open
fhennig wants to merge 1 commit into
Open
feat(website): sync user with backend on login, use internal user ID#1202fhennig wants to merge 1 commit into
fhennig wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
42de45d to
d0613f3
Compare
…for ownership
On GitHub login, mapProfileToUser calls POST /users/sync to upsert the user
in the backend and stores the returned internal Long ID as internalUserId in
the better-auth session (stateless JWE cookie). This replaces the previous
use of the GitHub ID for ownership checks on collections and subscriptions.
- auth.ts: async mapProfileToUser syncs user, adds internalUserId additional field
- authMiddleware.ts: reads internalUserId from session user
- backendProxy.ts: forwards internalUserId as userId query param instead of githubId
- Collection.ts: ownedBy changed from string to number to match backend Long
- PublicUser.ts: new Zod schema for GET /users/{id} response
- backendService.ts: adds getUser() to resolve owner names
- pages/api/users/[id].ts: new proxy route for public user lookup
- collection detail/edit pages: use internalUserId for ownership, display owner name
- E2E tests: sync user via POST /users/sync in beforeAll to get internal ID
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix(website): fix lint errors in auth.ts and authMiddleware.ts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
refactor(website): rename internalUserId to gsUserId
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix(website): make login fail if backend user sync fails, simplify gsUserId handling
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix(website): make ownerName non-optional, simplify collection detail page
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
refactor(website): simplify gsUserId assignment in authMiddleware
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
foo
d0613f3 to
02444de
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
resolves #1190
Summary
mapProfileToUsercallsPOST /users/syncto upsert the user in the backend and stores the returned internal ID asgsUserIdin the better-auth session (stateless JWE cookie)GET /users/{id}and displayed on the collection detail pageChanges
Auth & middleware
auth.ts:mapProfileToUsersyncs user with backend, storesgsUserId(number); throws on failure to abort loginauthMiddleware.ts: readsgsUserIdfrom session intoAstro.localsbackendProxy.ts: forwardsgsUserIdasuserIdquery paramTypes & API
types/Collection.ts:ownedBychanged fromstringtonumberto match backendLongtypes/PublicUser.ts: new Zod schema forGET /users/{id}responsebackendService.ts: addsgetUser()to resolve owner names server-sidepages/api/users/[id].ts: new proxy route for public user lookupCollection pages
ownerNameis always astringgsUserIdfor ownership checkTests
ownedByfrom string to number in fixturesPOST /users/syncinbeforeAllto obtain internal ID for collection ownershipNotes
This branch depends on the backend changes in
feat/user-table(users table,POST /users/sync,GET /users/{id}endpoints).🤖 Generated with Claude Code