@@ -3,6 +3,13 @@ import type { NextRequest } from 'next/server';
33import { prisma } from '@/app/prisma' ;
44import { randomBytes } from 'crypto' ;
55
6+ // Type for client object
7+ interface ClientType {
8+ id : string ;
9+ clientId : string ;
10+ clientSecret : string | null ;
11+ }
12+
613// Helper function to create response headers
714function getCorsHeaders ( ) {
815 return {
@@ -52,7 +59,7 @@ async function createTokens(clientId: string, userId: string, resource?: string)
5259// Handle refresh token grant
5360async function handleRefreshTokenGrant (
5461 refreshTokenValue : string ,
55- client : any ,
62+ client : ClientType ,
5663 clientSecret : string | undefined ,
5764 resource ?: string
5865) {
@@ -91,7 +98,7 @@ async function handleRefreshTokenGrant(
9198 }
9299
93100 // Validate client credentials for confidential clients
94- if ( client . clientSecret && client . clientSecret !== clientSecret ) {
101+ if ( client . clientSecret && ( client . clientSecret ?? undefined ) !== clientSecret ) {
95102 console . log ( '[RefreshToken] Invalid client credentials' ) ;
96103 return NextResponse . json ( { error : 'invalid_client' } , {
97104 status : 401 ,
@@ -106,7 +113,7 @@ async function handleRefreshTokenGrant(
106113 }
107114
108115 // Use existing resource or provided resource
109- const tokenResource = resource || refreshTokenRecord . resource ;
116+ const tokenResource = resource || refreshTokenRecord . resource || undefined ;
110117
111118 // Create new tokens
112119 const tokens = await createTokens ( client . id , refreshTokenRecord . userId , tokenResource ) ;
@@ -178,7 +185,7 @@ export async function POST(request: NextRequest) {
178185
179186 // Handle refresh token grant
180187 if ( grant_type === 'refresh_token' ) {
181- return await handleRefreshTokenGrant ( refresh_token ! , client , client_secret || undefined , resource ) ;
188+ return await handleRefreshTokenGrant ( refresh_token ! , client , client_secret ?? undefined , resource ) ;
182189 }
183190
184191 // Continue with authorization code grant (existing logic)
@@ -232,7 +239,7 @@ export async function POST(request: NextRequest) {
232239 }
233240
234241 // If PKCE is not present or not valid, require client secret for confidential clients
235- if ( ! authCode . codeChallenge && client . clientSecret && client . clientSecret !== client_secret ) {
242+ if ( ! authCode . codeChallenge && client . clientSecret && client . clientSecret !== ( client_secret ?? undefined ) ) {
236243 console . log ( "Invalid client_secret." , { client_id } ) ;
237244 return NextResponse . json ( { error : 'invalid_client' } , {
238245 status : 401 ,
@@ -249,7 +256,7 @@ export async function POST(request: NextRequest) {
249256 const tokens = await createTokens (
250257 client . id ,
251258 authCode . userId ,
252- resource || authCode . resource
259+ resource || authCode . resource || undefined
253260 ) ;
254261
255262 console . log ( "Access token and refresh token created." ) ;
0 commit comments