aboutsummaryrefslogtreecommitdiff
path: root/logic
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-01-25 15:01:38 +0100
committermetamuffin <metamuffin@disroot.org>2026-01-25 15:01:38 +0100
commit5075aede44cb8ab2df10e6debba38483e8d11e96 (patch)
treef719e4b4a0c29f3a27b4fa7cf0a6ee6f7739125c /logic
parent53361f4c6027d1569a707ce58889bc2c2ea3749c (diff)
downloadjellything-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.rs49
-rw-r--r--logic/src/permission.rs18
-rw-r--r--logic/src/session.rs0
-rw-r--r--logic/src/stats.rs42
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 })
-}