diff options
author | gumi <git@gumi.ca> | 2020-03-15 17:28:35 -0400 |
---|---|---|
committer | gumi <git@gumi.ca> | 2020-03-15 17:28:35 -0400 |
commit | a0a35766911f5354487663b0f148b824ca32ba44 (patch) | |
tree | 6a5a80a52eaacc8f8b35798cedd16ddea37e3992 /src/routers/vault/utils/ephemeral.js | |
parent | 267b900a82d7870e4bcd56857887fd3f697e6e45 (diff) | |
download | api-a0a35766911f5354487663b0f148b824ca32ba44.tar.gz api-a0a35766911f5354487663b0f148b824ca32ba44.tar.bz2 api-a0a35766911f5354487663b0f148b824ca32ba44.tar.xz api-a0a35766911f5354487663b0f148b824ca32ba44.zip |
turn the session store into a proper class
Diffstat (limited to 'src/routers/vault/utils/ephemeral.js')
-rw-r--r-- | src/routers/vault/utils/ephemeral.js | 45 |
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, } |