@@ -92,7 +92,9 @@ export interface NextAuthMiddlewareOptions {
92
92
secret ?: string
93
93
}
94
94
95
- type NextMiddlewareResult = ReturnType < NextMiddleware >
95
+ // TODO: `NextMiddleware` should allow returning `void`
96
+ // Simplify when https://github.com/vercel/next.js/pull/38625 is merged.
97
+ type NextMiddlewareResult = ReturnType < NextMiddleware > | void // eslint-disable-line @typescript-eslint/no-invalid-void-type
96
98
97
99
async function handleMiddleware (
98
100
req : NextRequest ,
@@ -145,12 +147,21 @@ async function handleMiddleware(
145
147
return NextResponse . redirect ( signInUrl )
146
148
}
147
149
150
+ export interface NextRequestWithAuth extends NextRequest {
151
+ nextauth : { token : JWT | null }
152
+ }
153
+
154
+ export type NextMiddlewareWithAuth = (
155
+ request : NextRequestWithAuth ,
156
+ event : NextFetchEvent
157
+ ) => NextMiddlewareResult | Promise < NextMiddlewareResult >
158
+
148
159
export type WithAuthArgs =
149
- | [ NextRequest ]
150
- | [ NextRequest , NextFetchEvent ]
151
- | [ NextRequest , NextAuthMiddlewareOptions ]
152
- | [ NextMiddleware ]
153
- | [ NextMiddleware , NextAuthMiddlewareOptions ]
160
+ | [ NextRequestWithAuth ]
161
+ | [ NextRequestWithAuth , NextFetchEvent ]
162
+ | [ NextRequestWithAuth , NextAuthMiddlewareOptions ]
163
+ | [ NextMiddlewareWithAuth ]
164
+ | [ NextMiddlewareWithAuth , NextAuthMiddlewareOptions ]
154
165
| [ NextAuthMiddlewareOptions ]
155
166
| [ ]
156
167
@@ -178,9 +189,9 @@ export function withAuth(...args: WithAuthArgs) {
178
189
if ( typeof args [ 0 ] === "function" ) {
179
190
const middleware = args [ 0 ]
180
191
const options = args [ 1 ] as NextAuthMiddlewareOptions | undefined
181
- return async ( ...args : Parameters < NextMiddleware > ) =>
192
+ return async ( ...args : Parameters < NextMiddlewareWithAuth > ) =>
182
193
await handleMiddleware ( args [ 0 ] , options , async ( token ) => {
183
- ; ( args [ 0 ] as any ) . nextauth = { token }
194
+ args [ 0 ] . nextauth = { token }
184
195
return await middleware ( ...args )
185
196
} )
186
197
}
1 commit comments
vercel[bot] commentedon Jul 15, 2022
Successfully deployed to the following URLs:
next-auth – ./
next-auth-phi-two.vercel.app
next-auth-nextauthjs.vercel.app
next-auth-git-main-nextauthjs.vercel.app
www.next-auth.js.org
next-auth.js.org