diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-01-25 15:01:38 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-01-25 15:01:38 +0100 |
| commit | 5075aede44cb8ab2df10e6debba38483e8d11e96 (patch) | |
| tree | f719e4b4a0c29f3a27b4fa7cf0a6ee6f7739125c /logic | |
| parent | 53361f4c6027d1569a707ce58889bc2c2ea3749c (diff) | |
| download | jellything-5075aede44cb8ab2df10e6debba38483e8d11e96.tar jellything-5075aede44cb8ab2df10e6debba38483e8d11e96.tar.bz2 jellything-5075aede44cb8ab2df10e6debba38483e8d11e96.tar.zst | |
remove some unused imports; css reload; port login logic
Diffstat (limited to 'logic')
| -rw-r--r-- | logic/src/login.rs | 49 | ||||
| -rw-r--r-- | logic/src/permission.rs | 18 | ||||
| -rw-r--r-- | logic/src/session.rs | 0 | ||||
| -rw-r--r-- | logic/src/stats.rs | 42 |
4 files changed, 0 insertions, 109 deletions
diff --git a/logic/src/login.rs b/logic/src/login.rs index f79fafc..0d616ff 100644 --- a/logic/src/login.rs +++ b/logic/src/login.rs @@ -21,52 +21,3 @@ pub fn create_admin_account() -> Result<()> { } Ok(()) } - -pub fn login_logic( - username: &str, - password: &str, - expire: Option<i64>, - drop_permissions: Option<HashSet<UserPermission>>, -) -> Result<String> { - // hashing the password regardless if the accounts exists to better resist timing attacks - let password = hash_password(username, password); - - let mut user = DATABASE - .get_user(username)? - .ok_or(anyhow!("invalid password"))?; - - if user.password != password { - Err(anyhow!("invalid password"))? - } - - if let Some(ep) = drop_permissions { - // remove all grant perms that are in `ep` - user.permissions - .0 - .retain(|p, val| if *val { !ep.contains(p) } else { true }) - } - - Ok(create( - user.name, - user.permissions, - Duration::from_days( - CONF.login_expire - .min(expire.unwrap_or(i64::MAX)) - .try_into() - .unwrap(), - ), - )) -} - -pub fn hash_password(username: &str, password: &str) -> Vec<u8> { - Argon2::default() - .hash_password( - format!("{username}\0{password}").as_bytes(), - <&str as TryInto<Salt>>::try_into("IYMa13osbNeLJKnQ1T8LlA").unwrap(), - ) - .unwrap() - .hash - .unwrap() - .as_bytes() - .to_vec() -} diff --git a/logic/src/permission.rs b/logic/src/permission.rs deleted file mode 100644 index 079d7c5..0000000 --- a/logic/src/permission.rs +++ /dev/null @@ -1,18 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2026 metamuffin <metamuffin.org> -*/ - -use crate::session::Session; -use anyhow::{Result, anyhow}; - -impl Session { - pub fn assert_admin(&self) -> Result<()> { - if self.user.admin { - Ok(()) - } else { - Err(anyhow!("Permission denied.")) - } - } -} diff --git a/logic/src/session.rs b/logic/src/session.rs deleted file mode 100644 index e69de29..0000000 --- a/logic/src/session.rs +++ /dev/null diff --git a/logic/src/stats.rs b/logic/src/stats.rs deleted file mode 100644 index 38a4c4e..0000000 --- a/logic/src/stats.rs +++ /dev/null @@ -1,42 +0,0 @@ -/* - This file is part of jellything (https://codeberg.org/metamuffin/jellything) - which is licensed under the GNU Affero General Public License (version 3); see /COPYING. - Copyright (C) 2026 metamuffin <metamuffin.org> -*/ - -use crate::{DATABASE, session::Session}; -use anyhow::Result; -use std::collections::BTreeMap; - -pub fn stats(session: &Session) -> Result<ApiStatsResponse> { - let mut items = DATABASE.list_nodes_with_udata(session.user.name.as_str())?; - items.retain(|(n, _)| n.visibility >= Visibility::Reduced); - - trait BinExt { - fn update(&mut self, node: &Node); - } - impl BinExt for StatsBin { - fn update(&mut self, node: &Node) { - self.count += 1; - self.size += node.storage_size; - if node.storage_size > self.max_size.0 { - self.max_size = (node.storage_size, node.slug.clone()) - } - if let Some(m) = &node.media { - self.runtime += m.duration; - if m.duration > self.max_runtime.0 { - self.max_runtime = (m.duration, node.slug.clone()) - } - } - } - } - - let mut total = StatsBin::default(); - let mut kinds = BTreeMap::<NodeKind, StatsBin>::new(); - for (i, _) in items { - total.update(&i); - kinds.entry(i.kind).or_default().update(&i); - } - - Ok(ApiStatsResponse { kinds, total }) -} |