aboutsummaryrefslogtreecommitdiff
path: root/logic/src/session.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-05-26 18:24:16 +0200
committermetamuffin <metamuffin@disroot.org>2025-05-26 18:24:16 +0200
commit3b15caade07e8fbe351fed9aceb3f435bf58368e (patch)
treecce91c229b78061ad36f29d76a76d67c3c737c59 /logic/src/session.rs
parent1eeff5c03e8985d16d4f2b6283741dd82b369bd3 (diff)
downloadjellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar
jellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar.bz2
jellything-3b15caade07e8fbe351fed9aceb3f435bf58368e.tar.zst
move all direct database access to logic crate
Diffstat (limited to 'logic/src/session.rs')
-rw-r--r--logic/src/session.rs19
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,