dont crash if changing admin name to existing name
This commit is contained in:
@ -251,6 +251,7 @@ edit_username: "Username bearbeiten"
|
||||
new_admin_link: "Passwort vergessen: Neuen Loginlink generieren"
|
||||
confirm_new_admin_link: "Bist du sicher, dass du einen neuen Passwort-Link generieren willst? Mit dem alten Passwort kann man sich dann nicht mehr einloggen."
|
||||
new_user_name: "Admin %{old} heißt ab sofort %{new}"
|
||||
user_name_already_exists: "Es gibt bereits einen Admin %{new}."
|
||||
succ_new_admin_link: "Neuer Loginlink für User %{user} wurde generiert"
|
||||
new_admin: "Neuer Admin"
|
||||
confirm_admin_delete: "Bist du sicher, dass der User gelöscht werden soll? Das kann _NICHT_ mehr rückgängig gemacht werden."
|
||||
|
@ -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;
|
||||
|
||||
@ -41,11 +41,11 @@ impl User {
|
||||
Ok(result.id)
|
||||
}
|
||||
|
||||
async fn update_name(&self, db: &SqlitePool, name: &str) {
|
||||
async fn update_name(&self, db: &SqlitePool, name: &str) -> bool {
|
||||
sqlx::query!("UPDATE user SET name = ? WHERE id = ?", name, self.id)
|
||||
.execute(db)
|
||||
.await
|
||||
.unwrap();
|
||||
.is_ok()
|
||||
}
|
||||
|
||||
async fn new_pw(&self, db: &SqlitePool) {
|
||||
|
@ -1,11 +1,11 @@
|
||||
use crate::{AppState, PageBuilder, auth::User, er, suc};
|
||||
use crate::{auth::User, er, suc, AppState, PageBuilder};
|
||||
use axum::{
|
||||
Form, Router,
|
||||
extract::State,
|
||||
response::{IntoResponse, Redirect},
|
||||
routing::{get, post},
|
||||
Form, Router,
|
||||
};
|
||||
use maud::{Markup, PreEscaped, html};
|
||||
use maud::{html, Markup, PreEscaped};
|
||||
use serde::Deserialize;
|
||||
use sqlx::SqlitePool;
|
||||
use std::sync::Arc;
|
||||
@ -138,12 +138,14 @@ async fn update_name(
|
||||
return Redirect::to("/admin/user");
|
||||
};
|
||||
|
||||
user.update_name(&db, &form.name).await;
|
||||
|
||||
if user.update_name(&db, &form.name).await {
|
||||
suc!(
|
||||
session,
|
||||
t!("new_user_name", old = user.name, new = form.name)
|
||||
);
|
||||
} else {
|
||||
er!(session, t!("user_name_already_exists", new = form.name));
|
||||
}
|
||||
|
||||
Redirect::to(&format!("/admin/user/{id}"))
|
||||
}
|
||||
|
Reference in New Issue
Block a user