diff options
Diffstat (limited to 'server/src/ui/admin/mod.rs')
| -rw-r--r-- | server/src/ui/admin/mod.rs | 78 |
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, &())]))) } |