diff --git a/locales/de-AT.yml b/locales/de-AT.yml index bfc75cd..3bb3e7e 100644 --- a/locales/de-AT.yml +++ b/locales/de-AT.yml @@ -178,6 +178,7 @@ cant_update_pw_if_already_existing_for_user: "Kann kein neues Passwort für %{us cant_update_pw_with_wrong_code: "Falscher Code zum Setzen eines neuen Passworts für %{user}" new_pw_for_user: "Neues Passwort für %{user} setzen" pw_set: "Passwort erfolgreich gesetzt" +cant_delete_last_admin: "Du kannst den letzten Admin nicht löschen" # diff --git a/src/admin/user/mod.rs b/src/admin/user/mod.rs index d47862e..4cfcbb1 100644 --- a/src/admin/user/mod.rs +++ b/src/admin/user/mod.rs @@ -1,7 +1,7 @@ use super::generate_random_alphanumeric; -use crate::{AppState, auth::User}; +use crate::{auth::User, AppState}; use argon2::password_hash::rand_core::OsRng; -use argon2::{Argon2, PasswordHasher, password_hash::SaltString}; +use argon2::{password_hash::SaltString, Argon2, PasswordHasher}; use axum::Router; use sqlx::SqlitePool; @@ -82,6 +82,10 @@ impl User { } async fn delete(&self, db: &SqlitePool) -> Result<(), String> { + let users = User::all(db).await; + if users.len() == 1 { + return Err(t!("cant_delete_last_admin").into()); + } sqlx::query!("DELETE FROM user WHERE id = ?", self.id) .execute(db) .await