From 2418c8e124a31ce65be6f15b1ded510327eae40b Mon Sep 17 00:00:00 2001 From: Philippe Loctaux Date: Thu, 4 May 2023 21:18:39 +0200 Subject: [PATCH] admin/users: force delete paper key --- crates/ezidam/src/routes/admin.rs | 1 + crates/ezidam/src/routes/admin/users.rs | 37 ++++++++++++++++ .../pages/admin/users/view.html.tera | 44 +++++++++++++++++++ 3 files changed, 82 insertions(+) diff --git a/crates/ezidam/src/routes/admin.rs b/crates/ezidam/src/routes/admin.rs index db06a8e..3451588 100644 --- a/crates/ezidam/src/routes/admin.rs +++ b/crates/ezidam/src/routes/admin.rs @@ -27,6 +27,7 @@ pub fn routes() -> Vec { admin_users_view, admin_users_archive, admin_users_password_reset, + admin_users_paper_key_reset, ] } diff --git a/crates/ezidam/src/routes/admin/users.rs b/crates/ezidam/src/routes/admin/users.rs index eb85549..5bb8cb5 100644 --- a/crates/ezidam/src/routes/admin/users.rs +++ b/crates/ezidam/src/routes/admin/users.rs @@ -329,3 +329,40 @@ pub async fn admin_users_password_reset( flash_message, )) } + +#[derive(Debug, FromForm)] +pub struct PaperKeyResetForm { + pub delete: Option, +} + +#[post("/admin/users//paper_key", data = "
")] +pub async fn admin_users_paper_key_reset( + _admin_not_current: JwtAdminNotCurrent, + mut db: Connection, + id: RocketUserID, + form: Form, +) -> Result> { + let (flash_kind, flash_message) = match form.delete { + Some(true) => { + let mut transaction = db.begin().await?; + + // Get user + let user = User::get_by_id(&mut transaction, &id.0) + .await? + .ok_or_else(|| Error::not_found("Could not find user"))?; + + user.set_paper_key(&mut transaction, None).await?; + + transaction.commit().await?; + + (FlashKind::Success, "Paper key has been deleted.") + } + _ => (FlashKind::Warning, "Nothing to do."), + }; + + Ok(Flash::new( + Redirect::to(uri!(admin_users_view(id))), + flash_kind, + flash_message, + )) +} diff --git a/crates/ezidam/templates/pages/admin/users/view.html.tera b/crates/ezidam/templates/pages/admin/users/view.html.tera index fc392b9..be2d087 100644 --- a/crates/ezidam/templates/pages/admin/users/view.html.tera +++ b/crates/ezidam/templates/pages/admin/users/view.html.tera @@ -385,6 +385,50 @@ + + + {% endblock content %} {% block libs_js %}