UNPKG

next-bungie-auth

Version:

Next Bungie Auth is an open source Next.js library that provides a configurable solution for authenticating your users with Bungie.net

70 lines (69 loc) 2.67 kB
import { decodeToken, encodeToken } from "./tokens"; /** @internal */ export const setStateCookie = (state, cookieJar, config) => { cookieJar.set(`${config.baseCookieName}.state`, state, { ...config.cookieOptions, maxAge: 900, }); }; /** @internal */ export const getStateCookie = (cookieJar, config) => { return cookieJar.get(`${config.baseCookieName}.state`)?.value; }; /** @internal */ export const clearStateCookie = (cookieJar, config) => { cookieJar.delete(`${config.baseCookieName}.state`); }; /** @internal */ export const setCallbackCookie = (callbackUrl, cookieJar, config) => { cookieJar.set(`${config.baseCookieName}.callback`, callbackUrl, { ...config.cookieOptions, maxAge: 900, }); }; /** @internal */ export const getCallbackCookie = (cookieJar, config) => { return cookieJar.get(`${config.baseCookieName}.callback`)?.value; }; /** @internal */ export const clearCallbackCookie = (cookieJar, config) => { cookieJar.delete(`${config.baseCookieName}.callback`); }; /** @internal */ export const getAllCookies = (cookieJar, config) => { const bungieMembershipId = cookieJar.get(`${config.baseCookieName}.membershipid`)?.value; const encodedAccessToken = cookieJar.get(`${config.baseCookieName}.access`)?.value; const accessExpires = new Date(cookieJar.get(`${config.baseCookieName}.expires`)?.value ?? 0); const encodedRefreshToken = cookieJar.get(`${config.baseCookieName}.refresh`)?.value; return { accessExpires, bungieMembershipId, accessToken: decodeToken(encodedAccessToken, config), refreshToken: decodeToken(encodedRefreshToken, config), }; }; /** @internal */ export const setAllCookies = ({ tokens, sessionAge, accessAge, accessExpires, }, cookieJar, config) => { cookieJar.set(`${config.baseCookieName}.membershipid`, tokens.membership_id, { ...config.cookieOptions, maxAge: sessionAge, }); cookieJar.set(`${config.baseCookieName}.refresh`, encodeToken(tokens.refresh_token, config), { ...config.cookieOptions, maxAge: sessionAge, }); cookieJar.set(`${config.baseCookieName}.access`, encodeToken(tokens.access_token, config), { ...config.cookieOptions, maxAge: accessAge, }); cookieJar.set(`${config.baseCookieName}.expires`, accessExpires.toISOString(), { ...config.cookieOptions, maxAge: accessAge, }); }; /** @internal */ export const clearAllCookies = (cookieJar, config) => { ["membershipid", "access", "refresh", "expires"].forEach((key) => { cookieJar.delete(`${config.baseCookieName}.${key}`); }); };