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
JavaScript
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
};
}