next-firebase-auth-edge
Version:
Next.js Firebase Authentication for Edge and server runtimes. Compatible with latest Next.js features.
41 lines (40 loc) • 1.27 kB
JavaScript
import { base64url } from 'jose';
import { RotatingCredential } from '../../../auth/rotating-credential.js';
export class MultipleCookieBuilder {
cookieName;
credential;
constructor(cookieName, signatureKeys) {
this.cookieName = cookieName;
this.credential = new RotatingCredential(signatureKeys);
}
async buildCookies(value) {
const signature = await this.credential.createSignature(value);
const result = [
{
name: `${this.cookieName}.id`,
value: value.idToken
},
{
name: `${this.cookieName}.refresh`,
value: value.refreshToken
}
];
if (value.customToken) {
result.push({
name: `${this.cookieName}.custom`,
value: value.customToken
});
}
if (value.metadata && Object.keys(value.metadata).length > 0) {
result.push({
name: `${this.cookieName}.metadata`,
value: base64url.encode(JSON.stringify(value.metadata))
});
}
result.push({
name: `${this.cookieName}.sig`,
value: signature
});
return result;
}
}