|
1 | 1 | import type { Clerk } from '@clerk/clerk-js'; |
2 | 2 |
|
3 | | -import { AUTH_HEADER } from '../constants'; |
| 3 | +import { AUTH_HEADER, AUTH_HEADER_DEV } from '../constants'; |
4 | 4 | import type { JWTHandler } from './jwt-handler'; |
5 | 5 |
|
6 | 6 | type Handler = Parameters<Clerk['__unstable__onAfterResponse']>[0]; |
| 7 | +type Res = Parameters<Handler>[1]; |
7 | 8 |
|
8 | 9 | /** Append appropriate query params to all Clerk requests */ |
9 | | -export function responseHandler(jwtHandler: JWTHandler) { |
| 10 | +export function responseHandler(jwtHandler: JWTHandler, { isProd }: { isProd: boolean }) { |
10 | 11 | const handler: Handler = async (_, response) => { |
11 | | - const authHeader = response?.headers.get(AUTH_HEADER); |
| 12 | + if (isProd) { |
| 13 | + await prodHandler(response, jwtHandler); |
| 14 | + } else { |
| 15 | + await devHandler(response, jwtHandler); |
| 16 | + } |
| 17 | + }; |
| 18 | + return handler; |
| 19 | +} |
| 20 | + |
| 21 | +async function devHandler(response: Res, jwtHandler: JWTHandler) { |
| 22 | + const header = response?.headers.get(AUTH_HEADER_DEV); |
| 23 | + console.log(`responseHandler (${AUTH_HEADER_DEV}):`, header); |
12 | 24 |
|
13 | | - console.log('responseHandler (authHeader):', authHeader); |
| 25 | + if (header) { |
| 26 | + await jwtHandler.set(header); |
| 27 | + } else { |
| 28 | + await jwtHandler.remove(); |
| 29 | + } |
| 30 | +} |
14 | 31 |
|
15 | | - if (authHeader?.startsWith('Bearer')) { |
16 | | - const newJWT = authHeader.split(' ')[1] || undefined; |
| 32 | +async function prodHandler(response: Res, jwtHandler: JWTHandler) { |
| 33 | + const header = response?.headers.get(AUTH_HEADER); |
| 34 | + console.log(`responseHandler (${AUTH_HEADER}):`, header); |
17 | 35 |
|
18 | | - if (newJWT) { |
19 | | - await jwtHandler.set(newJWT); |
20 | | - } else { |
21 | | - await jwtHandler.remove(); |
22 | | - } |
23 | | - } else if (authHeader) { |
24 | | - await jwtHandler.set(authHeader); |
25 | | - } |
26 | | - }; |
| 36 | + if (header?.startsWith('Bearer')) { |
| 37 | + const jwt = header.split(' ')[1] || undefined; |
27 | 38 |
|
28 | | - return handler; |
| 39 | + if (jwt) { |
| 40 | + await jwtHandler.set(jwt); |
| 41 | + } else { |
| 42 | + await jwtHandler.remove(); |
| 43 | + } |
| 44 | + } else if (header) { |
| 45 | + await jwtHandler.set(header); |
| 46 | + } |
29 | 47 | } |
0 commit comments