diff options
Diffstat (limited to 'logic/src/session.rs')
-rw-r--r-- | logic/src/session.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/logic/src/session.rs b/logic/src/session.rs index 72a1089..615694c 100644 --- a/logic/src/session.rs +++ b/logic/src/session.rs @@ -3,7 +3,7 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin <metamuffin.org> */ -use crate::CONF; +use crate::{CONF, DATABASE}; use aes_gcm_siv::{ KeyInit, aead::{Aead, generic_array::GenericArray}, @@ -85,10 +85,27 @@ pub fn validate(token: &str) -> anyhow::Result<String> { Ok(session_data.username) } +pub fn token_to_session(token: &str) -> anyhow::Result<Session> { + let username = validate(token)?; + let user = DATABASE + .get_user(&username)? + .ok_or(anyhow!("user does not exist"))?; + Ok(Session { user }) +} +pub fn bypass_auth_session() -> anyhow::Result<Session> { + let user = DATABASE + .get_user(&CONF.admin_username.as_ref().unwrap())? + .ok_or(anyhow!("user does not exist"))?; + Ok(Session { user }) +} + #[cfg(test)] fn load_test_config() { + use std::path::PathBuf; + use crate::{CONF_PRELOAD, Config}; *CONF_PRELOAD.lock().unwrap() = Some(Config { + database_path: PathBuf::default(), login_expire: 10, session_key: None, admin_password: None, |