From 3b15caade07e8fbe351fed9aceb3f435bf58368e Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 26 May 2025 18:24:16 +0200 Subject: move all direct database access to logic crate --- logic/src/session.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'logic/src/session.rs') 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 */ -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 { Ok(session_data.username) } +pub fn token_to_session(token: &str) -> anyhow::Result { + 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 { + 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, -- cgit v1.2.3-70-g09d2