Merge branch 'main' of https://git.raffauf-clan.de/schn33fuchs/ticketsystem
This commit is contained in:
@@ -26,3 +26,4 @@ frontend/node_modules/
|
||||
# Added by cargo
|
||||
|
||||
/target
|
||||
.antigravitycli/
|
||||
|
||||
@@ -418,28 +418,39 @@ pub async fn update_user(
|
||||
State(data): State<Arc<AppState>>,
|
||||
Json(body): Json<UserUpdateScheme>,
|
||||
) -> Result<impl IntoResponse, (StatusCode, Json<serde_json::Value>)> {
|
||||
let argon = Argon2::default();
|
||||
let salt = SaltString::generate(&mut OsRng);
|
||||
let hashed_pwd = match argon.hash_password(body.new_pwd.clone().as_bytes(), &salt) {
|
||||
Ok(h) => h.to_string(),
|
||||
Err(e) => panic!("Error hashing {:}", e),
|
||||
};
|
||||
let update_result = if !body.new_pwd.is_empty() {
|
||||
let argon = Argon2::default();
|
||||
let salt = SaltString::generate(&mut OsRng);
|
||||
let hashed_pwd = match argon.hash_password(body.new_pwd.clone().as_bytes(), &salt) {
|
||||
Ok(h) => h.to_string(),
|
||||
Err(e) => panic!("Error hashing {:}", e),
|
||||
};
|
||||
|
||||
let update_result = sqlx::query(r#"UPDATE users SET first_name = $1, last_name = $2, username = $3, pwd = $4, is_admin = $5 WHERE id = $6"#)
|
||||
.bind(body.first_name.to_owned())
|
||||
.bind(body.last_name.to_owned())
|
||||
.bind(body.username.to_owned())
|
||||
.bind(&hashed_pwd)
|
||||
.bind(body.make_admin.to_owned())
|
||||
.bind(id)
|
||||
.execute(&data.db)
|
||||
.await
|
||||
.map_err(|e| {
|
||||
(
|
||||
StatusCode::INTERNAL_SERVER_ERROR,
|
||||
Json(json!({"status": "error", "message": format!("{:?}", e)})),
|
||||
)
|
||||
})?;
|
||||
sqlx::query(r#"UPDATE users SET first_name = $1, last_name = $2, username = $3, pwd = $4, is_admin = $5 WHERE id = $6"#)
|
||||
.bind(body.first_name.to_owned())
|
||||
.bind(body.last_name.to_owned())
|
||||
.bind(body.username.to_owned())
|
||||
.bind(hashed_pwd)
|
||||
.bind(body.make_admin.to_owned())
|
||||
.bind(id)
|
||||
.execute(&data.db)
|
||||
.await
|
||||
} else {
|
||||
sqlx::query(r#"UPDATE users SET first_name = $1, last_name = $2, username = $3, is_admin = $4 WHERE id = $5"#)
|
||||
.bind(body.first_name.to_owned())
|
||||
.bind(body.last_name.to_owned())
|
||||
.bind(body.username.to_owned())
|
||||
.bind(body.make_admin.to_owned())
|
||||
.bind(id)
|
||||
.execute(&data.db)
|
||||
.await
|
||||
}
|
||||
.map_err(|e| {
|
||||
(
|
||||
StatusCode::INTERNAL_SERVER_ERROR,
|
||||
Json(json!({"status": "error", "message": format!("{:?}", e)})),
|
||||
)
|
||||
})?;
|
||||
|
||||
if update_result.rows_affected() == 0 {
|
||||
let error_response = serde_json::json!({
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
<head>
|
||||
<link data-trunk rel="rust" data-bin="bin" />
|
||||
<link data-trunk rel="scss" href="src/styles/main.scss" />
|
||||
<link data-trunk rel="icon" href="src/assets/favicon.ico" type="image/x-icon" />
|
||||
<link data-trunk rel="copy-dir" href="src/assets" />
|
||||
<meta charset="utf-8" />
|
||||
<title>Yew App</title>
|
||||
</head>
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
@@ -269,6 +269,7 @@ fn switch(route: Route) -> Html {
|
||||
pub fn app() -> Html {
|
||||
html! {
|
||||
<BrowserRouter>
|
||||
<basic_pages::Icon/>
|
||||
<Switch<Route> render={switch} />
|
||||
</BrowserRouter>
|
||||
}
|
||||
|
||||
@@ -109,3 +109,10 @@ pub fn denied_component() -> Html {
|
||||
</div>
|
||||
}
|
||||
}
|
||||
|
||||
#[component(Icon)]
|
||||
pub fn icon_component() -> Html {
|
||||
html! {
|
||||
<img src="assets/csg.png" class="csg-icon" />
|
||||
}
|
||||
}
|
||||
|
||||
@@ -566,6 +566,7 @@ pub fn user_by_id_component(props: &UserProps) -> Html {
|
||||
let last_name = (*last_name).clone();
|
||||
let username = (*username).clone();
|
||||
let make_admin = *make_admin;
|
||||
let new_pwd_state = new_pwd.clone();
|
||||
let new_pwd = (*new_pwd).clone();
|
||||
|
||||
saving.set(true);
|
||||
@@ -600,6 +601,7 @@ pub fn user_by_id_component(props: &UserProps) -> Html {
|
||||
if let Ok(updated) = resp.json::<FilteredUser>().await {
|
||||
user_state.set(Some(updated));
|
||||
}
|
||||
new_pwd_state.set(String::new());
|
||||
save_success.set(true);
|
||||
}
|
||||
Ok(resp) => {
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
.csg-icon {
|
||||
position: fixed;
|
||||
top: 1rem;
|
||||
right: 1rem;
|
||||
z-index: 9999;
|
||||
width: auto;
|
||||
height: auto;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0;
|
||||
|
||||
img {
|
||||
width: auto;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
@use "components/diagnostics";
|
||||
@use "components/frontpage";
|
||||
@use "components/home";
|
||||
@use "components/icon";
|
||||
|
||||
body {
|
||||
background: variables.$color-bg;
|
||||
|
||||
Reference in New Issue
Block a user