aboutsummaryrefslogtreecommitdiffstats
path: root/src/access/registry.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/access/registry.rs')
-rw-r--r--src/access/registry.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/access/registry.rs b/src/access/registry.rs
index 01e6ba9..e806d0c 100644
--- a/src/access/registry.rs
+++ b/src/access/registry.rs
@@ -146,6 +146,22 @@ pub(crate) fn logouts_path(name: &str) -> Vec<String> {
meta::path(&[meta::LOGOUTS, name])
}
+/// Where user `name`'s session `session` is recorded as ended (logged out of): its
+/// tokens aren't taken any more (`token::verify`). The value: until when the session
+/// would have lasted (Unix ms), after which it is left out of snapshots. Written by the
+/// user itself (`DELETE /auth/session`) or by one who may manage users.
+pub(crate) fn session_path(name: &str, session: &str) -> Vec<String> {
+ meta::path(&[meta::SESSIONS, name, session])
+}
+
+/// Whether user `name`'s session `session` was ended (`session_path`).
+pub(crate) fn session_ended(doc: &impl ReadDoc, name: &str, session: &str) -> bool {
+ store::read_path(doc, &session_path(name, session))
+ .ok()
+ .flatten()
+ .is_some()
+}
+
/// The users who may manage users: enabled, with `write` on `_continuum/users`.
pub(crate) fn managers(doc: &impl ReadDoc) -> Vec<String> {
names(doc)