aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui/admin/mod.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-25 15:21:24 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-25 15:21:24 +0100
commit12868c6bce4287adef760a76f3f1ef9d74fb9bda (patch)
tree5a7a7ff0d7feb970551eab4f855a1837b3c3fff4 /server/src/ui/admin/mod.rs
parent9c08495cca8b9aaf297c88da9ec98a619eb90762 (diff)
downloadjellything-12868c6bce4287adef760a76f3f1ef9d74fb9bda.tar
jellything-12868c6bce4287adef760a76f3f1ef9d74fb9bda.tar.bz2
jellything-12868c6bce4287adef760a76f3f1ef9d74fb9bda.tar.zst
user removal
Diffstat (limited to 'server/src/ui/admin/mod.rs')
-rw-r--r--server/src/ui/admin/mod.rs73
1 files changed, 4 insertions, 69 deletions
diff --git a/server/src/ui/admin/mod.rs b/server/src/ui/admin/mod.rs
index 79c9241..10037b5 100644
--- a/server/src/ui/admin/mod.rs
+++ b/server/src/ui/admin/mod.rs
@@ -6,25 +6,16 @@
pub mod import;
pub mod log;
+pub mod users;
use super::error::MyResult;
-use crate::{auth::hash_password, request_info::RequestInfo, ui_responder::UiResponse};
-use base64::{Engine, prelude::BASE64_URL_SAFE};
+use crate::{request_info::RequestInfo, ui_responder::UiResponse};
use jellycommon::{
- jellyobject::{OBB, ObjectBuffer, ObjectBufferBuilder},
- routes::u_admin_users,
+ jellyobject::{OBB, ObjectBuffer},
*,
};
-use jellydb::Query;
use jellyui::tr;
-use rand::random;
-use rocket::{
- FromForm,
- form::Form,
- get, post,
- response::{Flash, Redirect},
-};
-use std::str::FromStr;
+use rocket::get;
#[get("/admin/dashboard")]
pub async fn r_admin_dashboard(ri: RequestInfo<'_>) -> MyResult<UiResponse> {
@@ -49,59 +40,3 @@ pub async fn r_admin_dashboard(ri: RequestInfo<'_>) -> MyResult<UiResponse> {
);
Ok(ri.respond_ui(page))
}
-
-#[get("/admin/users")]
-pub fn r_admin_users(ri: RequestInfo) -> MyResult<UiResponse> {
- ri.require_admin()?;
-
- let mut users = Vec::new();
- ri.state.database.transaction(&mut |txn| {
- users.clear();
- let rows = txn
- .query(Query::from_str("FILTER Ulgn")?)?
- .collect::<Vec<_>>();
- for row in rows {
- let (row, _) = row?;
- users.push(txn.get(row)?.unwrap());
- }
- Ok(())
- })?;
-
- let mut list = ObjectBufferBuilder::default();
- for u in users {
- list.push(ADMIN_USER_LIST_ITEM, u.as_object());
- }
-
- let mut page = ObjectBufferBuilder::default();
- page.push(VIEW_TITLE, &*tr(ri.lang, "admin.users"));
- page.push(VIEW_ADMIN_USER_LIST, list.finish().as_object());
- Ok(ri.respond_ui(page))
-}
-
-#[derive(FromForm)]
-pub struct NewUser {
- login: String,
-}
-
-#[post("/admin/new_user", data = "<form>")]
-pub fn r_admin_new_user(ri: RequestInfo, form: Form<NewUser>) -> MyResult<Flash<Redirect>> {
- ri.require_admin()?;
-
- let password = BASE64_URL_SAFE.encode([(); 12].map(|()| random()));
- let password_hashed = hash_password(&form.login, &password);
-
- ri.state.database.transaction(&mut |txn| {
- let mut user = ObjectBufferBuilder::default();
- user.push(USER_LOGIN, &form.login);
- user.push(USER_PASSWORD, &password_hashed);
- user.push(USER_PASSWORD_REQUIRE_CHANGE, ());
- txn.insert(user.finish())?;
- Ok(())
- })?;
-
- Ok(Flash::new(
- Redirect::to(u_admin_users()),
- "success",
- format!("User created; password: {password}"),
- ))
-}