UNPKG

@hellocoop/api

Version:

Client API for Hellō https://hello.dev

55 lines (54 loc) 1.82 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.clearOidcCookie = exports.saveOidc = exports.getOidc = void 0; const config_1 = __importDefault(require("./config")); const cookie_1 = require("cookie"); const helper_server_1 = require("@hellocoop/helper-server"); const { cookies: { oidcName } } = config_1.default; const getOidc = async (req, res) => { try { const cookies = (0, cookie_1.parse)(req.headers()?.cookie || ''); const oidcCookie = cookies[oidcName]; if (!oidcCookie) return undefined; const oidc = await (0, helper_server_1.decryptObj)(oidcCookie, config_1.default.secret); if (oidc) { return oidc; } } catch (e) { (0, exports.clearOidcCookie)(res); console.error(e); } return undefined; }; exports.getOidc = getOidc; let apiRoute = '/'; const saveOidc = async (req, res, oidc) => { if (apiRoute === '/') apiRoute = req.path; try { const encCookie = await (0, helper_server_1.encryptObj)(oidc, config_1.default.secret); res.setCookie(oidcName, encCookie, { httpOnly: true, secure: config_1.default.production, sameSite: config_1.default.sameSiteStrict ? 'strict' : 'lax', maxAge: 5 * 60, // 5 minutes path: apiRoute }); } catch (e) { console.error(e); } }; exports.saveOidc = saveOidc; const clearOidcCookie = (res) => { res.setCookie(oidcName, '', { expires: new Date(0), // Set the expiry date to a date in the past path: apiRoute }); }; exports.clearOidcCookie = clearOidcCookie;