UNPKG

payload

Version:

Node, React, Headless CMS and Application Framework built on Next.js

48 lines (47 loc) 1.59 kB
import { parseCookies } from '../utilities/parseCookies.js'; const extractionMethods = { Bearer: ({ headers })=>{ const jwtFromHeader = headers.get('Authorization'); // allow RFC6750 OAuth 2.0 compliant Bearer tokens // in addition to the payload default JWT format if (jwtFromHeader?.startsWith('Bearer ')) { return jwtFromHeader.replace('Bearer ', ''); } return null; }, cookie: ({ headers, payload })=>{ const origin = headers.get('Origin'); const cookies = parseCookies(headers); const tokenCookieName = `${payload.config.cookiePrefix}-token`; const cookieToken = cookies.get(tokenCookieName); if (!cookieToken) { return null; } if (!origin || payload.config.csrf.length === 0 || payload.config.csrf.indexOf(origin) > -1) { return cookieToken; } return null; }, JWT: ({ headers })=>{ const jwtFromHeader = headers.get('Authorization'); if (jwtFromHeader?.startsWith('JWT ')) { return jwtFromHeader.replace('JWT ', ''); } return null; } }; export const extractJWT = (args)=>{ const { headers, payload } = args; const extractionOrder = payload.config.auth.jwtOrder; for (const extractionStrategy of extractionOrder){ const result = extractionMethods[extractionStrategy]({ headers, payload }); if (result) { return result; } } return null; }; //# sourceMappingURL=extractJWT.js.map