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"
|
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."
|
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}"
|
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"
|
succ_new_admin_link: "Neuer Loginlink für User %{user} wurde generiert"
|
||||||
new_admin: "Neuer Admin"
|
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."
|
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 super::generate_random_alphanumeric;
|
||||||
use crate::{AppState, auth::User};
|
use crate::{auth::User, AppState};
|
||||||
use argon2::password_hash::rand_core::OsRng;
|
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 axum::Router;
|
||||||
use sqlx::SqlitePool;
|
use sqlx::SqlitePool;
|
||||||
|
|
||||||
@ -41,11 +41,11 @@ impl User {
|
|||||||
Ok(result.id)
|
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)
|
sqlx::query!("UPDATE user SET name = ? WHERE id = ?", name, self.id)
|
||||||
.execute(db)
|
.execute(db)
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.is_ok()
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn new_pw(&self, db: &SqlitePool) {
|
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::{
|
use axum::{
|
||||||
Form, Router,
|
|
||||||
extract::State,
|
extract::State,
|
||||||
response::{IntoResponse, Redirect},
|
response::{IntoResponse, Redirect},
|
||||||
routing::{get, post},
|
routing::{get, post},
|
||||||
|
Form, Router,
|
||||||
};
|
};
|
||||||
use maud::{Markup, PreEscaped, html};
|
use maud::{html, Markup, PreEscaped};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use sqlx::SqlitePool;
|
use sqlx::SqlitePool;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
@ -138,12 +138,14 @@ async fn update_name(
|
|||||||
return Redirect::to("/admin/user");
|
return Redirect::to("/admin/user");
|
||||||
};
|
};
|
||||||
|
|
||||||
user.update_name(&db, &form.name).await;
|
if user.update_name(&db, &form.name).await {
|
||||||
|
suc!(
|
||||||
suc!(
|
session,
|
||||||
session,
|
t!("new_user_name", old = user.name, new = form.name)
|
||||||
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}"))
|
Redirect::to(&format!("/admin/user/{id}"))
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user