aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui/admin/users.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/ui/admin/users.rs')
-rw-r--r--server/src/ui/admin/users.rs46
1 files changed, 23 insertions, 23 deletions
diff --git a/server/src/ui/admin/users.rs b/server/src/ui/admin/users.rs
index 172facc..85f241b 100644
--- a/server/src/ui/admin/users.rs
+++ b/server/src/ui/admin/users.rs
@@ -6,28 +6,29 @@
use std::str::FromStr;
+use crate::{auth::hash_password, request_info::RequestInfo, ui::error::MyResult};
+use anyhow::anyhow;
use base64::{Engine, prelude::BASE64_URL_SAFE};
use jellycommon::{
- jellyobject::{OBB, ObjectBufferBuilder, Path},
+ jellyobject::{ObjectBufferBuilder, Path},
routes::u_admin_users,
*,
};
use jellydb::{Filter, Query};
-use jellyui::tr;
+use jellyui::{
+ components::admin::{AdminUser, AdminUserList},
+ tr,
+};
use rand::random;
use rocket::{
FromForm,
form::Form,
get, post,
- response::{Flash, Redirect},
-};
-
-use crate::{
- auth::hash_password, request_info::RequestInfo, ui::error::MyResult, ui_responder::UiResponse,
+ response::{Flash, Redirect, content::RawHtml},
};
#[get("/admin/users")]
-pub fn r_admin_users(ri: RequestInfo) -> MyResult<UiResponse> {
+pub fn r_admin_users(ri: RequestInfo) -> MyResult<RawHtml<String>> {
ri.require_admin()?;
let mut users = Vec::new();
@@ -43,15 +44,10 @@ pub fn r_admin_users(ri: RequestInfo) -> MyResult<UiResponse> {
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))
+ Ok(ri.respond_ui(&AdminUserList {
+ ri: &ri.render_info(),
+ users: &users.iter().map(|u| u.as_object()).collect::<Vec<_>>(),
+ }))
}
#[derive(FromForm)]
@@ -83,22 +79,26 @@ pub fn r_admin_new_user(ri: RequestInfo, form: Form<NewUser>) -> MyResult<Flash<
}
#[get("/admin/user/<name>")]
-pub fn r_admin_user(ri: RequestInfo<'_>, name: &str) -> MyResult<UiResponse> {
+pub fn r_admin_user(ri: RequestInfo<'_>, name: &str) -> MyResult<RawHtml<String>> {
ri.require_admin()?;
- let mut page = OBB::new();
+ let mut user = None;
ri.state.database.transaction(&mut |txn| {
if let Some(row) = txn.query_single(Query {
filter: Filter::Match(Path(vec![USER_LOGIN.0]), name.into()),
..Default::default()
})? {
- let user = txn.get(row)?.unwrap();
- page = OBB::new();
- page.push(VIEW_ADMIN_USER, user.as_object());
+ user = Some(txn.get(row)?.unwrap());
}
Ok(())
})?;
+ let Some(user) = user else {
+ Err(anyhow!("no such user"))?
+ };
- Ok(ri.respond_ui(page))
+ Ok(ri.respond_ui(&AdminUser {
+ ri: &ri.render_info(),
+ user: user.as_object(),
+ }))
}
#[post("/admin/user/<name>/remove")]