aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui/admin/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/ui/admin/mod.rs')
-rw-r--r--server/src/ui/admin/mod.rs30
1 files changed, 19 insertions, 11 deletions
diff --git a/server/src/ui/admin/mod.rs b/server/src/ui/admin/mod.rs
index e3eb2d6..4e07afb 100644
--- a/server/src/ui/admin/mod.rs
+++ b/server/src/ui/admin/mod.rs
@@ -7,7 +7,7 @@ pub mod log;
pub mod user;
use super::error::MyResult;
-use crate::helper::{language::AcceptLanguage, A};
+use crate::helper::{language::AcceptLanguage, RequestInfo, A};
use jellycommon::routes::u_admin_dashboard;
use jellyimport::is_importing;
use jellylogic::{
@@ -15,25 +15,27 @@ use jellylogic::{
create_invite, delete_invite, do_import, get_import_errors, list_invites,
update_search_index,
},
- session::AdminSession,
+ session::Session,
};
use jellyui::{
admin::AdminDashboardPage,
+ locale::tr,
render_page,
scaffold::{RenderInfo, SessionInfo},
};
use rocket::{
form::Form,
get, post,
- response::{content::RawHtml, Redirect},
+ response::{content::RawHtml, Flash, Redirect},
FromForm,
};
#[get("/admin/dashboard")]
pub async fn r_admin_dashboard(
- session: A<AdminSession>,
+ session: A<Session>,
lang: AcceptLanguage,
) -> MyResult<RawHtml<String>> {
+ session.0.assert_admin()?;
let AcceptLanguage(lang) = lang;
let flash = None;
@@ -57,7 +59,7 @@ pub async fn r_admin_dashboard(
RenderInfo {
importing: is_importing(),
session: Some(SessionInfo {
- user: session.0 .0.user,
+ user: session.0.user,
}),
},
lang,
@@ -65,9 +67,12 @@ pub async fn r_admin_dashboard(
}
#[post("/admin/generate_invite")]
-pub async fn r_admin_invite(session: A<AdminSession>) -> MyResult<Redirect> {
- let _ = create_invite(&session.0)?;
- Ok(Redirect::temporary(u_admin_dashboard()))
+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)]
@@ -77,21 +82,24 @@ pub struct DeleteInvite {
#[post("/admin/remove_invite", data = "<form>")]
pub async fn r_admin_remove_invite(
- session: A<AdminSession>,
+ session: A<Session>,
form: Form<DeleteInvite>,
) -> MyResult<Redirect> {
+ session.0.assert_admin()?;
delete_invite(&session.0, &form.invite)?;
Ok(Redirect::temporary(u_admin_dashboard()))
}
#[post("/admin/import?<incremental>")]
-pub async fn r_admin_import(session: A<AdminSession>, incremental: bool) -> MyResult<Redirect> {
+pub async fn r_admin_import(session: A<Session>, incremental: bool) -> MyResult<Redirect> {
+ session.0.assert_admin()?;
do_import(&session.0, incremental).await?.1?;
Ok(Redirect::temporary(u_admin_dashboard()))
}
#[post("/admin/update_search")]
-pub async fn r_admin_update_search(session: A<AdminSession>) -> MyResult<Redirect> {
+pub async fn r_admin_update_search(session: A<Session>) -> MyResult<Redirect> {
+ session.0.assert_admin()?;
update_search_index(&session.0).await?;
Ok(Redirect::temporary(u_admin_dashboard()))
}