@auth0/nextjs-auth0
Version:
Auth0 Next.js SDK
43 lines (42 loc) • 1.38 kB
JavaScript
export const LEGACY_COOKIE_NAME = "appSession";
/**
* The user's session.
*/
export class LegacySession {
constructor(user) {
this.user = user;
}
}
export function normalizeStatelessSession(sessionCookie) {
// if the session cookie has an `iat` claim in the protected header, it's a legacy cookie
// otherwise, it's the new session cookie format and no transformation is needed
if (sessionCookie.protectedHeader.iat) {
const legacySession = sessionCookie;
return convertFromLegacy(legacySession.protectedHeader, legacySession.payload);
}
return sessionCookie.payload;
}
export function normalizeStatefulSession(sessionData) {
if (sessionData.header?.iat) {
const legacySession = sessionData;
return convertFromLegacy(legacySession.header, legacySession.data);
}
return sessionData;
}
function convertFromLegacy(header, session) {
const userClaims = session.user;
return {
user: userClaims,
tokenSet: {
idToken: session.idToken ?? undefined,
accessToken: session.accessToken ?? undefined,
scope: session.accessTokenScope,
refreshToken: session.refreshToken,
expiresAt: session.accessTokenExpiresAt
},
internal: {
sid: userClaims.sid,
createdAt: header.iat
}
};
}