Skip to content

Commit 333a0ea

Browse files
authored
Merge pull request #83 from HazarBakir/auth
feat(auth): attach accessToken to session and redirect to /auth/callback
2 parents 3dceb1c + 95c104d commit 333a0ea

File tree

5 files changed

+35
-11
lines changed

5 files changed

+35
-11
lines changed

docker-compose.dev.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ services:
66
ports:
77
- "3000:3000"
88
environment:
9-
- NODE_ENV=development
10-
- NEXT_TELEMETRY_DISABLED=1
11-
- HOSTNAME=0.0.0.0
9+
- NODE_ENV=development
10+
- NEXT_TELEMETRY_DISABLED=1
11+
- HOSTNAME=0.0.0.0
12+
env_file:
13+
- .env.local
1214
volumes:
1315
- ./:/app
1416
- /app/node_modules

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: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,9 @@ class GitHubAPIClient {
112112
private githubToken = ''
113113

114114
constructor() {
115-
// Try to get token from environment
116-
if (typeof process !== 'undefined' && process.env?.GITHUB_TOKEN) {
117-
this.githubToken = process.env.GITHUB_TOKEN;
115+
// Only read env token on the server to avoid exposing secrets client-side
116+
if (typeof window === 'undefined' && typeof process !== 'undefined' && process.env?.GITHUB_TOKEN) {
117+
this.githubToken = process.env.GITHUB_TOKEN
118118
}
119119
}
120120

@@ -169,7 +169,9 @@ class GitHubAPIClient {
169169
return {
170170
hasToken: !!this.githubToken,
171171
tokenPrefix: this.githubToken ? this.githubToken.substring(0, 10) + '...' : 'NO_TOKEN',
172-
source: this.githubToken === process.env.GITHUB_TOKEN ? 'ENV_VAR' : 'USER_SET'
172+
source: (typeof window === 'undefined' && typeof process !== 'undefined' && process.env?.GITHUB_TOKEN && this.githubToken === process.env.GITHUB_TOKEN)
173+
? 'ENV_VAR'
174+
: (this.githubToken ? 'USER_SET' : 'NONE')
173175
}
174176
}
175177

@@ -238,8 +240,23 @@ class GitHubAPIClient {
238240

239241
const data = await response.json()
240242

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

244261
this.cache.set(cacheKey, { data, timestamp: Date.now() })
245262
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)