Skip to content

Commit 4ee686d

Browse files
committed
feat(auth): attach accessToken to session and redirect to /auth/callback
expose GitHub accessToken on session for post-auth state sync set GitHub sign-in callbackUrl to /auth/callback to complete login flow
1 parent eb9a0d5 commit 4ee686d

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

src/app/api/auth/[...nextauth]/route.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ const authOptions = {
8585
if (token.login && session.user) {
8686
session.user.login = token.login
8787
}
88+
if (token.accessToken) {
89+
session.accessToken = token.accessToken
90+
}
8891
return session
8992
},
9093
async redirect({ url, baseUrl }: { url: string; baseUrl: string }) {

src/app/login/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ function LoginContent() {
4747
</div>
4848

4949
<Button
50-
onClick={() => signIn('github')}
50+
onClick={() => signIn('github', { callbackUrl: '/auth/callback' })}
5151
className="w-full h-12 font-semibold text-base"
5252
size="lg"
5353
>

src/lib/api/github-api-client.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,23 @@ class GitHubAPIClient {
238238

239239
const data = await response.json()
240240

241-
// Check rate limit status
242-
// Rate limit headers available but not currently used
241+
if (typeof window !== 'undefined') {
242+
const updateRateLimit = (window as typeof window & { updateRateLimit?: (headers: Headers) => void }).updateRateLimit
243+
if (updateRateLimit) {
244+
const headers = new Headers()
245+
const remaining = response.headers.get('x-ratelimit-remaining') || response.headers.get('X-RateLimit-Remaining')
246+
const limit = response.headers.get('x-ratelimit-limit') || response.headers.get('X-RateLimit-Limit')
247+
const reset = response.headers.get('x-ratelimit-reset') || response.headers.get('X-RateLimit-Reset')
248+
const used = response.headers.get('x-ratelimit-used') || response.headers.get('X-RateLimit-Used')
249+
if (remaining && limit && reset) {
250+
headers.set('x-ratelimit-remaining', remaining)
251+
headers.set('x-ratelimit-limit', limit)
252+
headers.set('x-ratelimit-reset', reset)
253+
if (used) headers.set('x-ratelimit-used', used)
254+
updateRateLimit(headers)
255+
}
256+
}
257+
}
243258

244259
this.cache.set(cacheKey, { data, timestamp: Date.now() })
245260
return data

src/lib/api/github-graphql-client.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,9 @@ class GitHubGraphQLClient {
182182
const headers = new Headers()
183183
headers.set('x-ratelimit-remaining', data.data.rateLimit.remaining.toString())
184184
headers.set('x-ratelimit-limit', data.data.rateLimit.limit.toString())
185-
headers.set('x-ratelimit-reset', new Date(data.data.rateLimit.resetAt).getTime().toString())
185+
// normalize reset to seconds since epoch to match UI multiplier
186+
const resetSeconds = Math.floor(new Date(data.data.rateLimit.resetAt).getTime() / 1000)
187+
headers.set('x-ratelimit-reset', resetSeconds.toString())
186188
headers.set('x-ratelimit-used', (data.data.rateLimit.limit - data.data.rateLimit.remaining).toString())
187189
updateRateLimit(headers)
188190
}

0 commit comments

Comments
 (0)