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