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