@hellocoop/api
Version:
Client API for Hellō https://hello.dev
77 lines (76 loc) • 2.8 kB
JavaScript
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;
;