UNPKG

next-firebase-auth-edge

Version:

Next.js Firebase Authentication for Edge and server runtimes. Compatible with latest Next.js features.

36 lines (35 loc) 1.26 kB
import { errors } from 'jose'; import { InvalidTokenError, InvalidTokenReason } from '../../../auth/error.js'; import { RotatingCredential } from '../../../auth/rotating-credential.js'; export class SingleCookieParser { cookies; cookieName; signatureKeys; constructor(cookies, cookieName, signatureKeys) { this.cookies = cookies; this.cookieName = cookieName; this.signatureKeys = signatureKeys; } async parseCookies() { const jwtCookie = this.cookies.get(this.cookieName); if (!jwtCookie) { throw new InvalidTokenError(InvalidTokenReason.MISSING_CREDENTIALS); } const credential = new RotatingCredential(this.signatureKeys); try { const result = await credential.verify(jwtCookie); return { idToken: result.id_token, refreshToken: result.refresh_token, customToken: result.custom_token, metadata: (result.metadata ?? {}) }; } catch (e) { if (e instanceof errors.JWSSignatureVerificationFailed) { throw new InvalidTokenError(InvalidTokenReason.INVALID_SIGNATURE); } throw e; } } }