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.63 kB
import { getFirebaseAuth } from '../auth/index.js'; import { AuthCookies } from './cookies/AuthCookies.js'; import { ObjectCookiesProvider } from './cookies/parser/ObjectCookiesProvider.js'; import { getCookiesTokens } from './tokens.js'; import { getMetadataInternal } from './metadata.js'; export async function refreshApiResponseCookies(request, response, options) { const value = await refreshApiCookies(request.cookies, request.headers, options); await appendAuthCookiesApi(request.cookies, response, value, options); return response; } export async function appendAuthCookiesApi(cookies, response, value, options) { const authCookies = new AuthCookies(new ObjectCookiesProvider(cookies), options); await authCookies.setAuthNextApiResponseHeaders(value, response); } export async function refreshApiCookies(cookies, headers, options) { const referer = headers['referer'] ?? ''; const tokens = await getCookiesTokens(cookies, options); const { handleTokenRefresh } = getFirebaseAuth({ serviceAccount: options.serviceAccount, apiKey: options.apiKey, tenantId: options.tenantId }); const tokenRefreshResult = await handleTokenRefresh(tokens.refreshToken, { referer, enableCustomToken: options.enableCustomToken }); const metadata = await getMetadataInternal(tokenRefreshResult, options); return { customToken: tokenRefreshResult.customToken, idToken: tokenRefreshResult.idToken, refreshToken: tokenRefreshResult.refreshToken, decodedIdToken: tokenRefreshResult.decodedIdToken, metadata }; }