diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/create_beta_keys_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/create_beta_keys_handler.rs index 56279f59db..c80cf8bfc5 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/create_beta_keys_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/create_beta_keys_handler.rs @@ -14,7 +14,7 @@ use mysql_queries::queries::users::user_profiles::get_user_profile_by_username:: use crate::http_server::web_utils::response_error_helpers::to_simple_json_error; use crate::http_server::common_responses::common_web_error::CommonWebError; -use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, RequireModeratorError}; +use crate::http_server::web_utils::user_session::require_moderator::require_moderator; use crate::state::server_state::ServerState; const MAXIMUM_KEYS : u32 = 100; @@ -60,12 +60,7 @@ pub async fn create_beta_keys_handler( server_state: web::Data>, ) -> Result { - let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|err| match err { - RequireModeratorError::ServerError => CommonWebError::from_error(err), - RequireModeratorError::NotAuthorized => CommonWebError::NotAuthorized, - })?; + let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let mut maybe_referrer_user_token = None; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/edit_beta_key_distributed_flag_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/edit_beta_key_distributed_flag_handler.rs index fd571432c4..eae701228a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/edit_beta_key_distributed_flag_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/edit_beta_key_distributed_flag_handler.rs @@ -14,7 +14,7 @@ use tokens::tokens::w2l_results::W2lResultToken; use crate::http_server::web_utils::response_error_helpers::to_simple_json_error; use crate::http_server::common_responses::common_web_error::CommonWebError; -use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, RequireModeratorError}; +use crate::http_server::web_utils::user_session::require_moderator::require_moderator; use crate::state::server_state::ServerState; /// For the URL PathInfo @@ -58,12 +58,7 @@ pub async fn edit_beta_key_distributed_flag_handler( server_state: web::Data>, ) -> Result { - let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|err| match err { - RequireModeratorError::ServerError => CommonWebError::from_error(err), - RequireModeratorError::NotAuthorized => CommonWebError::NotAuthorized, - })?; + let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; edit_beta_key_distributed_flag(&path.token, request.is_distributed, &server_state.mysql_pool) .await diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/edit_beta_key_note_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/edit_beta_key_note_handler.rs index b74bf9632e..378d2daa12 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/edit_beta_key_note_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/beta_keys/edit_beta_key_note_handler.rs @@ -13,7 +13,7 @@ use tokens::tokens::beta_keys::BetaKeyToken; use crate::http_server::web_utils::response_error_helpers::to_simple_json_error; use crate::http_server::common_responses::common_web_error::CommonWebError; -use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, RequireModeratorError}; +use crate::http_server::web_utils::user_session::require_moderator::require_moderator; use crate::state::server_state::ServerState; /// For the URL PathInfo @@ -57,12 +57,7 @@ pub async fn edit_beta_key_note_handler( server_state: web::Data>, ) -> Result { - let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|err| match err { - RequireModeratorError::ServerError => CommonWebError::from_error(err), - RequireModeratorError::NotAuthorized => CommonWebError::NotAuthorized, - })?; + let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let maybe_note = request.note.as_deref() .map(|note| note.trim()) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_pmx/upload_pmx_media_file_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_pmx/upload_pmx_media_file_handler.rs index c6f8ef2c21..a83faabc9a 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_pmx/upload_pmx_media_file_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/media_files/upload/upload_pmx/upload_pmx_media_file_handler.rs @@ -23,7 +23,8 @@ use tokens::tokens::media_files::MediaFileToken; use crate::http_server::endpoints::media_files::upload::upload_error::MediaFileUploadError; use crate::http_server::endpoints::media_files::upload::upload_pmx::extract_and_upload_pmx_files::{extract_and_upload_pmx_files, PmxError}; use crate::http_server::validations::validate_idempotency_token_format::validate_idempotency_token_format; -use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, RequireModeratorError}; +use crate::http_server::common_responses::common_web_error::CommonWebError; +use crate::http_server::web_utils::user_session::require_moderator::require_moderator; use crate::state::server_state::ServerState; /// Form-multipart request fields. @@ -118,8 +119,8 @@ pub async fn upload_pmx_media_file_handler( let user_session = require_moderator(&http_request, &server_state.session_checker, &mut *mysql_connection) .await .map_err(|err| match err { - RequireModeratorError::ServerError => MediaFileUploadError::ServerError, - RequireModeratorError::NotAuthorized => MediaFileUploadError::NotAuthorized, + CommonWebError::NotAuthorized => MediaFileUploadError::NotAuthorized, + _ => MediaFileUploadError::ServerError, })?; let maybe_avt_token = server_state diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/alerts/moderation_send_alert_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/alerts/moderation_send_alert_handler.rs index 10c031642a..c7f8cc01e4 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/alerts/moderation_send_alert_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/alerts/moderation_send_alert_handler.rs @@ -35,12 +35,7 @@ pub async fn moderation_send_alert_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let ip_address = get_request_ip(&http_request); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/debug_logs/moderation_list_debug_logs_for_token_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/debug_logs/moderation_list_debug_logs_for_token_handler.rs index f3d965a0fb..04e854b8b6 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/debug_logs/moderation_list_debug_logs_for_token_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/debug_logs/moderation_list_debug_logs_for_token_handler.rs @@ -72,10 +72,7 @@ pub async fn moderation_list_debug_logs_for_token_handler( query: web::Query, server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let mut mysql_connection = server_state.mysql_pool.acquire().await?; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/info/moderator_token_info_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/info/moderator_token_info_handler.rs index 1d68ad087a..ec7ab084bc 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/info/moderator_token_info_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/info/moderator_token_info_handler.rs @@ -25,7 +25,7 @@ use tokens::tokens::users::UserToken; use crate::http_server::web_utils::serialize_as_json_error::serialize_as_json_error; use crate::http_server::common_responses::common_web_error::CommonWebError; -use crate::http_server::web_utils::user_session::require_moderator::{require_moderator, RequireModeratorError}; +use crate::http_server::web_utils::user_session::require_moderator::require_moderator; use crate::state::server_state::ServerState; /// For the URL PathInfo @@ -60,12 +60,7 @@ pub async fn moderator_get_token_info_handler( server_state: web::Data> ) -> Result { - let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|err| match err { - RequireModeratorError::ServerError => CommonWebError::from_error(err), - RequireModeratorError::NotAuthorized => CommonWebError::NotAuthorized, - })?; + let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let token = path.token.trim(); let maybe_result = get_entity_from_token(&server_state.mysql_pool, &path.token) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/moderation_get_job_by_token_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/moderation_get_job_by_token_handler.rs index 65753eac80..40813847ee 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/moderation_get_job_by_token_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/moderation_get_job_by_token_handler.rs @@ -90,10 +90,7 @@ pub async fn moderation_get_job_by_token_handler( path: web::Path, server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let mut mysql_connection = server_state.mysql_pool.acquire().await?; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/user/list_user_jobs_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/user/list_user_jobs_handler.rs index 2a2195112e..56256256c8 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/user/list_user_jobs_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/jobs/user/list_user_jobs_handler.rs @@ -36,9 +36,7 @@ pub async fn list_user_jobs_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|_| CommonWebError::NotAuthorized)?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let results = list_user_jobs_for_moderation(&path.user_token, &server_state.mysql_pool) .await diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/staff_audit_logs/moderator_list_staff_audit_logs_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/staff_audit_logs/moderator_list_staff_audit_logs_handler.rs index f0aeb83dd6..98719e5e80 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/staff_audit_logs/moderator_list_staff_audit_logs_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/staff_audit_logs/moderator_list_staff_audit_logs_handler.rs @@ -74,10 +74,7 @@ pub async fn moderator_list_staff_audit_logs_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let limit = query.limit .unwrap_or(DEFAULT_LIMIT) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_subscribing_users_by_signup_date.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_subscribing_users_by_signup_date.rs index c4410e5f13..d51dc46dc6 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_subscribing_users_by_signup_date.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_subscribing_users_by_signup_date.rs @@ -36,9 +36,7 @@ pub async fn moderator_list_subscribing_users_by_signup_date_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|_| CommonWebError::NotAuthorized)?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let result = list_subscribing_users_by_signup_date_for_moderation( ListSubscribingUsersBySignupDateArgs { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_users_by_signup_date.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_users_by_signup_date.rs index c0b3a863ff..711be69d67 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_users_by_signup_date.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_list_users_by_signup_date.rs @@ -36,9 +36,7 @@ pub async fn moderator_list_users_by_signup_date_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|_| CommonWebError::NotAuthorized)?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let result = list_users_by_signup_date_for_moderation( ListUsersBySignupDateArgs { diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_by_stripe_customer_id_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_by_stripe_customer_id_handler.rs index 4070f3991b..3ffb961167 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_by_stripe_customer_id_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_by_stripe_customer_id_handler.rs @@ -33,9 +33,7 @@ pub async fn moderator_user_lookup_by_stripe_customer_id_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|_| CommonWebError::NotAuthorized)?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let stripe_customer_id = request.stripe_customer_id.trim(); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_handler.rs index 76d65c60b7..feb99cbe5e 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user/moderator_user_lookup_handler.rs @@ -40,9 +40,7 @@ pub async fn moderator_user_lookup_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|_| CommonWebError::NotAuthorized)?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let search = request.search.trim(); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_bans/moderation_ban_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_bans/moderation_ban_user_handler.rs index 4564ef88fb..5949ecd571 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_bans/moderation_ban_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_bans/moderation_ban_user_handler.rs @@ -59,10 +59,7 @@ pub async fn moderation_ban_user_handler( ) -> Result, CommonWebError> { // 1. Require moderator with ban permissions. - let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; if !user_session.can_ban_users { warn!("User {} is not allowed to ban users", user_session.user_token.as_str()); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_emails/moderator_change_user_email_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_emails/moderator_change_user_email_handler.rs index 2397fcb16a..77dedaa0a0 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_emails/moderator_change_user_email_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_emails/moderator_change_user_email_handler.rs @@ -69,10 +69,7 @@ pub async fn moderator_change_user_email_handler( ) -> Result, CommonWebError> { // 1. Require moderator. - let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; // 2. Normalize + validate the new email. let new_email = request.new_email.trim().to_lowercase(); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_emails/moderator_list_email_address_changes_for_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_emails/moderator_list_email_address_changes_for_user_handler.rs index 3dad00de6a..ccb4b84a9e 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_emails/moderator_list_email_address_changes_for_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_emails/moderator_list_email_address_changes_for_user_handler.rs @@ -101,10 +101,7 @@ pub async fn moderator_list_email_address_changes_for_user_handler( ) -> Result, CommonWebError> { // 1. Require moderator. - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; // 2. Resolve username → user_token. Not-found → 404; everything else → 500. let username = path.username.trim().to_lowercase(); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_edit_user_feature_flags_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_edit_user_feature_flags_handler.rs index 1a1447d921..6f5ee84308 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_edit_user_feature_flags_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_edit_user_feature_flags_handler.rs @@ -87,10 +87,7 @@ pub async fn moderator_edit_user_feature_flags_handler( redis_pool: Data>, ) -> Result { - let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let username_or_token = path.username_or_token.trim(); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_all_available_user_feature_flags_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_all_available_user_feature_flags_handler.rs index 7c50456fa1..279ce42797 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_all_available_user_feature_flags_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_all_available_user_feature_flags_handler.rs @@ -47,10 +47,7 @@ pub async fn moderator_list_all_available_user_feature_flags_handler( http_request: HttpRequest, server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let feature_flags: Vec = UserFeatureFlag::all_variants() .into_iter() diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_user_feature_flags_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_user_feature_flags_handler.rs index 70250543f7..7f5becf2a4 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_user_feature_flags_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_feature_flags/moderator_list_user_feature_flags_handler.rs @@ -54,10 +54,7 @@ pub async fn moderator_list_user_feature_flags_handler( path: Path, server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let username_or_token = path.username_or_token.trim(); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_global_user_referrals_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_global_user_referrals_handler.rs index 6c8385457f..24b5909236 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_global_user_referrals_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_global_user_referrals_handler.rs @@ -40,10 +40,7 @@ pub async fn moderator_list_global_user_referrals_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let limit = query.limit .unwrap_or(DEFAULT_LIMIT) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_user_referrals_for_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_user_referrals_for_user_handler.rs index 272bc51ef4..dcfc2da2b1 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_user_referrals_for_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_referrals/moderator_list_user_referrals_for_user_handler.rs @@ -45,10 +45,7 @@ pub async fn moderator_list_user_referrals_for_user_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let limit = query.limit .unwrap_or(DEFAULT_LIMIT) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_for_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_for_user_handler.rs index 7ad904d6c2..725483aa8d 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_for_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_for_user_handler.rs @@ -79,10 +79,7 @@ pub async fn moderator_list_user_session_impersonation_requests_for_user_handler server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let limit = query.limit .unwrap_or(DEFAULT_LIMIT) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_handler.rs index 08f56c95da..9b6634fdfe 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_list_user_session_impersonation_requests_handler.rs @@ -73,10 +73,7 @@ pub async fn moderator_list_user_session_impersonation_requests_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let limit = query.limit .unwrap_or(DEFAULT_LIMIT) diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_user_session_impersonation_request_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_user_session_impersonation_request_handler.rs index 87850fdaaf..9800d28adb 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_user_session_impersonation_request_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_sessions/moderator_user_session_impersonation_request_handler.rs @@ -69,10 +69,7 @@ pub async fn moderator_user_session_impersonation_request_handler( ) -> Result, CommonWebError> { // 1. Require moderator session. - let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await.map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; if user_session.is_banned { warn!("Banned moderator tried to impersonate: {}", user_session.user_token.as_str()); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_stripe_data/moderator_get_user_stripe_customer_ids_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_stripe_data/moderator_get_user_stripe_customer_ids_handler.rs index c423548a03..99d390b8bb 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_stripe_data/moderator_get_user_stripe_customer_ids_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/user_stripe_data/moderator_get_user_stripe_customer_ids_handler.rs @@ -43,9 +43,7 @@ pub async fn moderator_get_user_stripe_customer_ids_handler( .acquire() .await?; - let _moderator_session = require_moderator(&http_request, &server_state.session_checker, &mut *mysql_connection) - .await - .map_err(|_| CommonWebError::NotAuthorized)?; + let _moderator_session = require_moderator(&http_request, &server_state.session_checker, &mut *mysql_connection).await?; let customer_links = list_user_stripe_customer_links_for_user(&path.user_token, &mut mysql_connection) .await diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/list_wallet_ledger_entries_by_wallet_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/list_wallet_ledger_entries_by_wallet_handler.rs index 4de22adeaf..8cbd49e9f4 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/list_wallet_ledger_entries_by_wallet_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/list_wallet_ledger_entries_by_wallet_handler.rs @@ -36,9 +36,7 @@ pub async fn list_wallet_ledger_entries_by_wallet_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|_| CommonWebError::NotAuthorized)?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let results = list_wallet_ledger_entries_by_wallet(&path.wallet_token, &server_state.mysql_pool) .await diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/moderator_get_wallet_ledger_entry_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/moderator_get_wallet_ledger_entry_handler.rs index cbe11215bb..a54aa586b7 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/moderator_get_wallet_ledger_entry_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallet_ledger_entries/moderator_get_wallet_ledger_entry_handler.rs @@ -36,9 +36,7 @@ pub async fn moderator_get_wallet_ledger_entry_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|_| CommonWebError::NotAuthorized)?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let maybe_entry = get_wallet_ledger_entry_for_moderation(&path.wallet_ledger_entry_token, &server_state.mysql_pool) .await diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/list_user_wallets_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/list_user_wallets_handler.rs index c9f702a9e5..25d09d08c3 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/list_user_wallets_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/list_user_wallets_handler.rs @@ -36,9 +36,7 @@ pub async fn list_user_wallets_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|_| CommonWebError::NotAuthorized)?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let results = list_user_wallets_for_moderation(&path.user_token, &server_state.mysql_pool) .await diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_add_banked_balance_to_wallet_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_add_banked_balance_to_wallet_handler.rs index 24136e8507..1a502c8598 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_add_banked_balance_to_wallet_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_add_banked_balance_to_wallet_handler.rs @@ -46,12 +46,7 @@ pub async fn moderator_add_banked_balance_to_wallet_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|err| { - warn!("Moderator check failed: {:?}", err); - CommonWebError::NotAuthorized - })?; + let user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let ip_address = get_request_ip(&http_request); diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_create_wallet_for_user_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_create_wallet_for_user_handler.rs index aa31e5a891..48123baab8 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_create_wallet_for_user_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_create_wallet_for_user_handler.rs @@ -37,9 +37,7 @@ pub async fn moderator_create_wallet_for_user_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|_| CommonWebError::NotAuthorized)?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let user_token = request.user_token.as_ref() .ok_or_else(|| CommonWebError::BadInputWithSimpleMessage("user_token is required".to_string()))?; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_get_wallet_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_get_wallet_handler.rs index ac2a5914d4..216a7884ef 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_get_wallet_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/moderation/wallets/moderator_get_wallet_handler.rs @@ -36,9 +36,7 @@ pub async fn moderator_get_wallet_handler( server_state: web::Data>, ) -> Result, CommonWebError> { - let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool) - .await - .map_err(|_| CommonWebError::NotAuthorized)?; + let _user_session = require_moderator(&http_request, &server_state.session_checker, &server_state.mysql_pool).await?; let maybe_wallet = get_wallet_for_moderation(&path.wallet_token, &server_state.mysql_pool) .await diff --git a/crates/service/web/storyteller_web/src/http_server/web_utils/user_session/require_moderator.rs b/crates/service/web/storyteller_web/src/http_server/web_utils/user_session/require_moderator.rs index dea644367c..69466b4e1a 100644 --- a/crates/service/web/storyteller_web/src/http_server/web_utils/user_session/require_moderator.rs +++ b/crates/service/web/storyteller_web/src/http_server/web_utils/user_session/require_moderator.rs @@ -1,31 +1,12 @@ -use std::error::Error; -use std::fmt::{Display, Formatter}; - use actix_web::HttpRequest; use log::warn; use sqlx::{Executor, MySql}; use mysql_queries::queries::users::user_sessions::get_user_session_by_token::SessionUserRecord; +use crate::http_server::common_responses::common_web_error::CommonWebError; use crate::http_server::session::session_checker::SessionChecker; -#[derive(Debug)] -pub enum RequireModeratorError { - ServerError, - NotAuthorized, -} - -impl Display for RequireModeratorError { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match self { - Self::ServerError => write!(f, "ServerError"), - Self::NotAuthorized => write!(f, "NotAuthorized"), - } - } -} - -impl Error for RequireModeratorError {} - /// `mysql_executor` can be any sqlx executor — pass `&server_state.mysql_pool` to grab a /// fresh connection, or an in-flight connection/transaction (`&mut *connection`) to reuse /// one the handler already holds. @@ -33,7 +14,7 @@ pub async fn require_moderator<'e, 'c : 'e, E>( http_request: &HttpRequest, session_checker: &SessionChecker, mysql_executor: E, -) -> Result +) -> Result where E: 'e + Executor<'c, Database = MySql> { let maybe_user_session = session_checker @@ -41,20 +22,20 @@ pub async fn require_moderator<'e, 'c : 'e, E>( .await .map_err(|e| { warn!("Session checker error: {:?}", e); - RequireModeratorError::ServerError + CommonWebError::from_error(e) })?; let user_session = match maybe_user_session { Some(session) => session, None => { warn!("not logged in"); - return Err(RequireModeratorError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } }; if !user_session.is_mod() { warn!("user is not a moderator: {:?}", user_session.user_token.as_str()); - return Err(RequireModeratorError::NotAuthorized); + return Err(CommonWebError::NotAuthorized); } Ok(user_session)