aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui/admin/mod.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-16 17:50:57 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-16 17:50:57 +0100
commitbe4af57d75cc1e233b4714b18198fb7bde49464d (patch)
tree6e529e748fc1d5c212dcf8033c8158630ca4f4d6 /server/src/ui/admin/mod.rs
parentbb1822e3e68fe6f699102bfc1659731bdbac1a40 (diff)
downloadjellything-be4af57d75cc1e233b4714b18198fb7bde49464d.tar
jellything-be4af57d75cc1e233b4714b18198fb7bde49464d.tar.bz2
jellything-be4af57d75cc1e233b4714b18198fb7bde49464d.tar.zst
refactor ui responder; add admin import pages
Diffstat (limited to 'server/src/ui/admin/mod.rs')
-rw-r--r--server/src/ui/admin/mod.rs78
1 files changed, 7 insertions, 71 deletions
diff --git a/server/src/ui/admin/mod.rs b/server/src/ui/admin/mod.rs
index 5ee05b7..61e62a4 100644
--- a/server/src/ui/admin/mod.rs
+++ b/server/src/ui/admin/mod.rs
@@ -3,80 +3,16 @@
which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
Copyright (C) 2026 metamuffin <metamuffin.org>
*/
+
pub mod import;
-pub mod log;
-pub mod user;
use super::error::MyResult;
-use crate::request_info::RequestInfo;
-use jellycommon::routes::u_admin_dashboard;
-use jellyimport::is_importing;
-use rocket::{
- FromForm,
- form::Form,
- get, post,
- request::FlashMessage,
- response::{Flash, Redirect, content::RawHtml},
-};
+use crate::{request_info::RequestInfo, ui_responder::UiResponse};
+use jellycommon::{VIEW_ADMIN_DASHBOARD, jellyobject::ObjectBuffer};
+use rocket::get;
#[get("/admin/dashboard")]
-pub async fn r_admin_dashboard(
- ri: RequestInfo,
- flash: Option<FlashMessage<'_>>,
-) -> MyResult<RawHtml<String>> {
- ri.session.assert_admin()?;
- let invites = list_invites(&ri.session)?;
-
- let busy = if is_importing() {
- Some("An import is currently running.")
- } else {
- None
- };
-
- Ok(RawHtml(render_page(
- &AdminDashboardPage {
- busy,
- invites: &invites,
- flash: &flash.map(FlashMessage::into_inner),
- lang: &ri.lang,
- },
- ri.render_info(),
- )))
-}
-
-#[post("/admin/generate_invite")]
-pub async fn r_admin_invite(ri: RequestInfo) -> MyResult<Flash<Redirect>> {
- let i = create_invite(&ri.session)?;
- Ok(Flash::success(
- Redirect::to(u_admin_dashboard()),
- tr(ri.lang, "admin.invite_create_success").replace("{invite}", &i),
- ))
-}
-
-#[derive(FromForm)]
-pub struct DeleteInvite {
- invite: String,
-}
-
-#[post("/admin/remove_invite", data = "<form>")]
-pub async fn r_admin_remove_invite(
- ri: RequestInfo,
- form: Form<DeleteInvite>,
-) -> MyResult<Flash<Redirect>> {
- ri.session.assert_admin()?;
- delete_invite(&ri.session, &form.invite)?;
- Ok(Flash::success(
- Redirect::to(u_admin_dashboard()),
- tr(ri.lang, "admin.invite_delete_success"),
- ))
-}
-
-#[post("/admin/update_search")]
-pub async fn r_admin_update_search(ri: RequestInfo) -> MyResult<Flash<Redirect>> {
- ri.session.assert_admin()?;
- update_search_index(&ri.session).await?;
- Ok(Flash::success(
- Redirect::to(u_admin_dashboard()),
- tr(ri.lang, "admin.update_search_success"),
- ))
+pub async fn r_admin_dashboard(ri: RequestInfo<'_>) -> MyResult<UiResponse> {
+ ri.require_admin()?;
+ Ok(ri.respond_ui(ObjectBuffer::new(&mut [(VIEW_ADMIN_DASHBOARD.0, &())])))
}