aboutsummaryrefslogtreecommitdiff
path: root/logic/src/session.rs
diff options
context:
space:
mode:
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,