UNPKG

@hellocoop/api

Version:

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

77 lines (76 loc) 2.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAuthfromCookies = exports.clearAuthCookieParams = exports.clearAuthCookie = exports.saveAuthCookie = void 0; const helper_server_1 = require("@hellocoop/helper-server"); const definitions_1 = require("@hellocoop/definitions"); const config_1 = __importDefault(require("./config")); const cookie_1 = require("cookie"); const oidc_1 = require("./oidc"); const { cookies: { authName, oidcName } } = config_1.default; const PRODUCTION = config_1.default.production; const ENABLE_3P_COOKIES = (process.env.ENABLE_3P_COOKIES === 'true'); const SAME_SITE = (ENABLE_3P_COOKIES) ? 'none' : (config_1.default.sameSiteStrict ? 'strict' : 'lax'); const SECURE = PRODUCTION || ENABLE_3P_COOKIES; const saveAuthCookie = async (res, auth) => { try { const encCookie = await (0, helper_server_1.encryptObj)(auth, config_1.default.secret); if (!encCookie) return false; res.setCookie(authName, encCookie, { httpOnly: true, secure: SECURE, sameSite: SAME_SITE, path: '/' // let any server side route call getAuth }); return true; } catch (e) { console.error(e); } return false; }; exports.saveAuthCookie = saveAuthCookie; const clearAuthCookie = (res) => { const { name, value, options } = (0, exports.clearAuthCookieParams)(); res.setCookie(name, value, options); }; exports.clearAuthCookie = clearAuthCookie; const clearAuthCookieParams = () => { return { name: authName, value: '', options: { expires: new Date(0), // Set the expiry date to a date in the past path: '/', // Specify the path } }; }; exports.clearAuthCookieParams = clearAuthCookieParams; const getAuthfromCookies = async function (req, res) { const cookies = (0, cookie_1.parse)(req.headers()?.cookie || ''); if (cookies[oidcName] && res) // clear OIDC cookie if still there (0, oidc_1.clearOidcCookie)(res); const authCookie = cookies[authName]; if (!authCookie) return definitions_1.NotLoggedIn; try { const auth = await (0, helper_server_1.decryptObj)(authCookie, config_1.default.secret); if (auth) { if (auth.isLoggedIn && config_1.default.cookieToken) auth.cookieToken = authCookie; return auth; } } catch (e) { if (res) (0, exports.clearAuthCookie)(res); console.error(e); } return definitions_1.NotLoggedIn; }; exports.getAuthfromCookies = getAuthfromCookies;