summaryrefslogtreecommitdiff
path: root/src/routers/vault/utils/ephemeral.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/routers/vault/utils/ephemeral.js')
-rw-r--r--src/routers/vault/utils/ephemeral.js45
1 files changed, 0 insertions, 45 deletions
diff --git a/src/routers/vault/utils/ephemeral.js b/src/routers/vault/utils/ephemeral.js
index 570600c..87889da 100644
--- a/src/routers/vault/utils/ephemeral.js
+++ b/src/routers/vault/utils/ephemeral.js
@@ -1,50 +1,6 @@
-// TODO: use Redis for in-memory caching of sessions
-
-// this was originally a Proxy<Map<String, Session>> but was replaced because of a nodejs bug
-// XXX: maybe we should use an already-existing Express session manager // NIH syndrome
const timeout_symbol = Symbol("timeout");
const hydrate_symbol = Symbol("hydrate");
const container_symbol = Symbol("container");
-const session_handler = {
- [container_symbol]: new Map(),
- [hydrate_symbol] (key, obj) {
- if (obj === null || obj === undefined)
- return obj;
-
- let minutes = 30;
-
- if (Reflect.has(obj, timeout_symbol)) {
- clearTimeout(obj[timeout_symbol]);
- minutes = 360; // 6 hours
- }
-
- let expires = new Date();
- expires.setUTCMinutes(expires.getUTCMinutes() + minutes);
- obj.expires = expires // this could also be a symbol
- obj[timeout_symbol] = setTimeout(() => session_handler.delete(key), minutes * 60000);
-
- return obj;
- },
- has (key) {
- return session_handler[container_symbol].has(key);
- },
- get (key) {
- return session_handler[hydrate_symbol](key, session_handler[container_symbol].get(key));
- },
- set (key, obj) {
- return session_handler[container_symbol].set(key, session_handler[hydrate_symbol](key, obj));
- },
- delete (key) {
- if (session_handler[container_symbol].get(key) && session_handler[container_symbol].get(key)[timeout_symbol])
- clearTimeout(session_handler[container_symbol].get(key)[timeout_symbol]);
- return session_handler[container_symbol].delete(key);
- },
- [Symbol.iterator]: function* () {
- for (const [key, obj] of session_handler[container_symbol]) {
- yield [key, obj];
- }
- },
-};
// TODO: DRY this shit
const identity_handler = {
@@ -86,6 +42,5 @@ const identity_handler = {
module.exports = {
- session_handler,
identity_handler,
}