mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-07 10:31:46 +00:00
move another storyteller-web query: ban user
This commit is contained in:
1 parent
961c5cf43d
commit
97b7120ff8
4 files changed
+53
-28
No files matched your search
@@ -3,4 +3,5 @@ pub mod list_users_query_builder;
|
||||
pub mod lookup_user_for_login_by_email;
|
||||
pub mod lookup_user_for_login_by_username;
|
||||
pub mod lookup_user_for_login_result;
|
||||
pub mod set_user_ban_status;
|
||||
pub mod update_user_record_with_new_stripe_customer_id;
|
||||
@@ -0,0 +1,39 @@
|
||||
use anyhow::anyhow;
|
||||
use sqlx::MySqlPool;
|
||||
use container_common::anyhow_result::AnyhowResult;
|
||||
use tokens::users::user::UserToken;
|
||||
|
||||
pub struct SetUserBanStatsArgs<'a> {
|
||||
pub subject_user_token: &'a UserToken,
|
||||
pub is_banned: bool,
|
||||
pub mod_user_token: &'a UserToken,
|
||||
pub maybe_mod_comments: Option<&'a str>,
|
||||
pub mysql_pool: &'a MySqlPool,
|
||||
}
|
||||
|
||||
pub async fn set_user_ban_status(args: SetUserBanStatsArgs<'_>) -> AnyhowResult<()> {
|
||||
let query_result = sqlx::query!(
|
||||
r#"
|
||||
UPDATE users
|
||||
SET
|
||||
is_banned = ?,
|
||||
maybe_mod_comments = ?,
|
||||
maybe_mod_user_token = ?,
|
||||
version = version + 1
|
||||
|
||||
WHERE users.token = ?
|
||||
LIMIT 1
|
||||
"#,
|
||||
args.is_banned,
|
||||
args.maybe_mod_comments,
|
||||
args.mod_user_token,
|
||||
args.subject_user_token,
|
||||
)
|
||||
.execute(args.mysql_pool)
|
||||
.await;
|
||||
|
||||
match query_result {
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => Err(anyhow!("error with query: {:?}", err)),
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -9,6 +9,7 @@ use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
|
||||
use crate::http_server::web_utils::response_success_helpers::simple_json_success;
|
||||
use crate::server_state::ServerState;
|
||||
use crate::validations::model_uploads::validate_model_title;
|
||||
use database_queries::queries::ip_bans::upsert_ip_ban::{upsert_ip_ban, UpsertIpBanArgs};
|
||||
use log::{info, warn, log};
|
||||
use regex::Regex;
|
||||
use sqlx::error::DatabaseError;
|
||||
@@ -16,7 +17,6 @@ use sqlx::error::Error::Database;
|
||||
use sqlx::mysql::MySqlDatabaseError;
|
||||
use std::fmt;
|
||||
use std::sync::Arc;
|
||||
use database_queries::queries::ip_bans::upsert_ip_ban::{upsert_ip_ban, UpsertIpBanArgs};
|
||||
use user_input_common::validate_user_provided_ip_address::validate_user_provided_ip_address;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
|
||||
+12
-27
@@ -9,6 +9,7 @@ use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
|
||||
use crate::http_server::web_utils::response_success_helpers::simple_json_success;
|
||||
use crate::http_server::web_utils::serialize_as_json_error::serialize_as_json_error;
|
||||
use crate::server_state::ServerState;
|
||||
use database_queries::queries::users::user::set_user_ban_status::{set_user_ban_status, SetUserBanStatsArgs};
|
||||
use database_queries::queries::users::user_profiles::get_user_profile_by_username::get_user_profile_by_username;
|
||||
use log::{info, warn, log};
|
||||
use regex::Regex;
|
||||
@@ -131,33 +132,17 @@ pub async fn ban_user_handler(
|
||||
}
|
||||
};
|
||||
|
||||
let query_result = sqlx::query!(
|
||||
r#"
|
||||
UPDATE users
|
||||
SET
|
||||
is_banned = ?,
|
||||
maybe_mod_comments = ?,
|
||||
maybe_mod_user_token = ?,
|
||||
version = version + 1
|
||||
|
||||
WHERE users.token = ?
|
||||
LIMIT 1
|
||||
"#,
|
||||
&request.is_banned,
|
||||
&request.mod_notes,
|
||||
&user_session.user_token,
|
||||
&user_profile.user_token
|
||||
)
|
||||
.execute(&server_state.mysql_pool)
|
||||
.await;
|
||||
|
||||
match query_result {
|
||||
Ok(_) => {},
|
||||
Err(err) => {
|
||||
warn!("Add IP ban DB error: {:?}", err);
|
||||
return Err(BanUserErrorResponse::server_error());
|
||||
}
|
||||
};
|
||||
set_user_ban_status(SetUserBanStatsArgs {
|
||||
subject_user_token: &user_profile.user_token,
|
||||
is_banned: request.is_banned,
|
||||
mod_user_token: &user_session.user_token_typed,
|
||||
maybe_mod_comments: Some(&request.mod_notes),
|
||||
mysql_pool: &server_state.mysql_pool,
|
||||
}).await
|
||||
.map_err(|err| {
|
||||
warn!("Add IP ban DB error: {:?}", err);
|
||||
BanUserErrorResponse::server_error()
|
||||
})?;
|
||||
|
||||
Ok(simple_json_success())
|
||||
}
|
||||
Reference in new issue
Block a user