diff --git a/crates/service/plugins/users/src/endpoints/create_account_handler.rs b/crates/service/plugins/users/src/endpoints/create_account_handler.rs index 197f53cc94..4fb127e2a0 100644 --- a/crates/service/plugins/users/src/endpoints/create_account_handler.rs +++ b/crates/service/plugins/users/src/endpoints/create_account_handler.rs @@ -21,7 +21,7 @@ use mysql_queries::queries::users::user_sessions::create_user_session::create_us use password::bcrypt_hash_password::bcrypt_hash_password; use user_input_common::check_for_slurs::contains_slurs; -use crate::session::http::session_cookie_manager::SessionCookieManager; +use crate::session::http::http_user_session_manager::HttpUserSessionManager; use crate::utils::email_to_gravatar::email_to_gravatar; use crate::validations::is_reserved_username::is_reserved_username; use crate::validations::validate_passwords::validate_passwords; @@ -93,7 +93,7 @@ pub async fn create_account_handler( http_request: HttpRequest, request: web::Json, mysql_pool: web::Data, - session_cookie_manager: web::Data, + session_cookie_manager: web::Data, firehose_publisher: web::Data, ) -> Result { diff --git a/crates/service/plugins/users/src/endpoints/login_handler.rs b/crates/service/plugins/users/src/endpoints/login_handler.rs index c9e89408f2..87e6423dc3 100644 --- a/crates/service/plugins/users/src/endpoints/login_handler.rs +++ b/crates/service/plugins/users/src/endpoints/login_handler.rs @@ -21,7 +21,7 @@ use mysql_queries::queries::users::user::lookup_user_for_login_by_username::look use mysql_queries::queries::users::user_sessions::create_user_session::create_user_session; use password::bcrypt_confirm_password::bcrypt_confirm_password; -use crate::session::http::session_cookie_manager::SessionCookieManager; +use crate::session::http::http_user_session_manager::HttpUserSessionManager; #[derive(Deserialize, ToSchema)] pub struct LoginRequest { @@ -99,7 +99,7 @@ impl ResponseError for LoginErrorResponse { pub async fn login_handler( http_request: HttpRequest, request: web::Json, - session_cookie_manager: web::Data, + session_cookie_manager: web::Data, mysql_pool: web::Data, ) -> Result { diff --git a/crates/service/plugins/users/src/endpoints/logout_handler.rs b/crates/service/plugins/users/src/endpoints/logout_handler.rs index 2f6612c7ee..4f4e055e31 100644 --- a/crates/service/plugins/users/src/endpoints/logout_handler.rs +++ b/crates/service/plugins/users/src/endpoints/logout_handler.rs @@ -16,7 +16,7 @@ use http_server_common::response::response_error_helpers::to_simple_json_error; use mysql_queries::queries::users::user_sessions::delete_user_session::delete_user_session; use user_traits_component::traits::internal_session_cache_purge::InternalSessionCachePurge; -use crate::session::http::session_cookie_manager::SessionCookieManager; +use crate::session::http::http_user_session_manager::HttpUserSessionManager; #[derive(Serialize, ToSchema)] pub struct LogoutSuccessResponse { @@ -61,7 +61,7 @@ impl fmt::Display for LogoutError { )] pub async fn logout_handler( http_request: HttpRequest, - session_cookie_manager: web::Data, + session_cookie_manager: web::Data, mysql_pool: web::Data, internal_session_cache_purge: web::Data, ) -> Result diff --git a/crates/service/plugins/users/src/endpoints/password_reset_redeem_handler.rs b/crates/service/plugins/users/src/endpoints/password_reset_redeem_handler.rs index b5dc0bdfca..bb599e83b6 100644 --- a/crates/service/plugins/users/src/endpoints/password_reset_redeem_handler.rs +++ b/crates/service/plugins/users/src/endpoints/password_reset_redeem_handler.rs @@ -14,7 +14,7 @@ use mysql_queries::queries::users::user_password_resets::lookup_password_reset_r use mysql_queries::queries::users::user_sessions::create_user_session::create_user_session; use password::bcrypt_hash_password::bcrypt_hash_password; -use crate::session::http::session_cookie_manager::SessionCookieManager; +use crate::session::http::http_user_session_manager::HttpUserSessionManager; #[derive(Deserialize)] pub struct PasswordResetRedemptionRequest { @@ -73,7 +73,7 @@ impl ResponseError for PasswordResetRedemptionErrorResponse { pub async fn password_reset_redeem_handler( http_request: HttpRequest, request: web::Json, - session_cookie_manager: web::Data, + session_cookie_manager: web::Data, mysql_pool: web::Data, ) -> Result { diff --git a/crates/service/plugins/users/src/session/http/session_cookie_manager.rs b/crates/service/plugins/users/src/session/http/http_user_session_manager.rs similarity index 90% rename from crates/service/plugins/users/src/session/http/session_cookie_manager.rs rename to crates/service/plugins/users/src/session/http/http_user_session_manager.rs index df306213ec..6820b90a17 100644 --- a/crates/service/plugins/users/src/session/http/session_cookie_manager.rs +++ b/crates/service/plugins/users/src/session/http/http_user_session_manager.rs @@ -14,7 +14,7 @@ use log::warn; use cookies::jwt_signer::JwtSigner; use errors::AnyhowResult; -use crate::session::http::session_cookie_payload::SessionCookiePayload; +use crate::session::http::http_user_session_payload::HttpUserSessionPayload; /** * Cookie version history @@ -30,12 +30,12 @@ const SESSION_COOKIE_NAME : &str = "session"; // TODO(echelon,2022-08-29): Fix how domains and "secure" cookies are handled #[derive(Clone)] -pub struct SessionCookieManager { +pub struct HttpUserSessionManager { cookie_domain: String, jwt_signer: JwtSigner, } -impl SessionCookieManager { +impl HttpUserSessionManager { pub fn new(cookie_domain: &str, hmac_secret: &str) -> AnyhowResult { Ok(Self { cookie_domain: cookie_domain.to_string(), @@ -83,7 +83,7 @@ impl SessionCookieManager { } fn decode_session_cookie_payload(&self, session_cookie: &Cookie) - -> AnyhowResult + -> AnyhowResult { let cookie_contents = session_cookie.value().to_string(); @@ -93,14 +93,14 @@ impl SessionCookieManager { let maybe_user_token = claims.get("user_token") .map(|t| t.to_string()); - Ok(SessionCookiePayload { + Ok(HttpUserSessionPayload { session_token, maybe_user_token, }) } pub fn decode_session_payload_from_request(&self, request: &HttpRequest) - -> AnyhowResult> + -> AnyhowResult> { let cookie = match request.cookie(SESSION_COOKIE_NAME) { None => return Ok(None), @@ -142,13 +142,13 @@ impl SessionCookieManager { #[cfg(test)] mod tests { - use crate::session::http::session_cookie_manager::SessionCookieManager; + use crate::session::http::http_user_session_manager::HttpUserSessionManager; #[test] fn test_cookie_payload() { // NB: Let's make extra sure this always works when migrating cookies, else we'll accidentally log out logged-in users. // (These are version 2 cookies.) - let manager = SessionCookieManager::new("fakeyou.com", "secret").unwrap(); + let manager = HttpUserSessionManager::new("fakeyou.com", "secret").unwrap(); let cookie = manager.create_cookie("ex_session_token", "ex_user_token").unwrap(); assert_eq!(cookie.value(), "eyJhbGciOiJIUzI1NiJ9.eyJjb29raWVfdmVyc2lvbiI6IjIiLCJzZXNzaW9uX3Rva2VuIjoiZXhfc2Vzc2lvbl90b2tlbiIsInVzZXJfdG9rZW4iOiJleF91c2VyX3Rva2VuIn0.94ly2gHhlPVtnANsNy6cJozFVmId4imwW5v-mei7jD8"); @@ -158,7 +158,7 @@ mod tests { fn test_cookie_round_trip() { // NB: Let's make extra sure this always works when migrating cookies, else we'll accidentally log out logged-in users. // (These are version 2 cookies.) - let manager = SessionCookieManager::new("fakeyou.com", "secret").unwrap(); + let manager = HttpUserSessionManager::new("fakeyou.com", "secret").unwrap(); let cookie = manager.create_cookie("ex_session_token", "ex_user_token").unwrap(); let decoded = manager.decode_session_cookie_payload(&cookie).unwrap(); diff --git a/crates/service/plugins/users/src/session/http/session_cookie_payload.rs b/crates/service/plugins/users/src/session/http/http_user_session_payload.rs similarity index 88% rename from crates/service/plugins/users/src/session/http/session_cookie_payload.rs rename to crates/service/plugins/users/src/session/http/http_user_session_payload.rs index c12276534a..464859127b 100644 --- a/crates/service/plugins/users/src/session/http/session_cookie_payload.rs +++ b/crates/service/plugins/users/src/session/http/http_user_session_payload.rs @@ -1,6 +1,6 @@ #[derive(Clone)] -pub struct SessionCookiePayload { +pub struct HttpUserSessionPayload { /// The database primary key for the session instance. pub session_token: String, diff --git a/crates/service/plugins/users/src/session/http/mod.rs b/crates/service/plugins/users/src/session/http/mod.rs index 0f135e9168..4387c2f61d 100644 --- a/crates/service/plugins/users/src/session/http/mod.rs +++ b/crates/service/plugins/users/src/session/http/mod.rs @@ -1,2 +1,2 @@ -pub mod session_cookie_manager; -pub mod session_cookie_payload; +pub mod http_user_session_manager; +pub mod http_user_session_payload; diff --git a/crates/service/plugins/users/src/session/session_checker.rs b/crates/service/plugins/users/src/session/session_checker.rs index 0acddf90c9..f61145524c 100644 --- a/crates/service/plugins/users/src/session/session_checker.rs +++ b/crates/service/plugins/users/src/session/session_checker.rs @@ -16,26 +16,26 @@ use redis_caching::redis_ttl_cache::{RedisTtlCache, RedisTtlCacheConnection}; use redis_common::redis_cache_keys::RedisCacheKeys; use tokens::tokens::users::UserToken; -use crate::session::http::session_cookie_manager::SessionCookieManager; +use crate::session::http::http_user_session_manager::HttpUserSessionManager; use crate::session::lookup::user_session_extended::{UserSessionExtended, UserSessionPreferences, UserSessionPremiumPlanInfo, UserSessionRoleAndPermissions, UserSessionSubscriptionPlan, UserSessionUserDetails}; use crate::session::lookup::user_session_feature_flags::UserSessionFeatureFlags; #[derive(Clone)] pub struct SessionChecker { - cookie_manager: SessionCookieManager, + cookie_manager: HttpUserSessionManager, maybe_redis_ttl_cache: Option, } impl SessionChecker { - pub fn new(cookie_manager: &SessionCookieManager) -> Self { + pub fn new(cookie_manager: &HttpUserSessionManager) -> Self { Self { cookie_manager: cookie_manager.clone(), maybe_redis_ttl_cache: None, } } - pub fn new_with_cache(cookie_manager: &SessionCookieManager, redis_ttl_cache: RedisTtlCache) -> Self { + pub fn new_with_cache(cookie_manager: &HttpUserSessionManager, redis_ttl_cache: RedisTtlCache) -> Self { Self { cookie_manager: cookie_manager.clone(), maybe_redis_ttl_cache: Some(redis_ttl_cache), diff --git a/crates/service/web/storyteller_web/src/main.rs b/crates/service/web/storyteller_web/src/main.rs index 073133c423..a3f1a59893 100644 --- a/crates/service/web/storyteller_web/src/main.rs +++ b/crates/service/web/storyteller_web/src/main.rs @@ -66,7 +66,7 @@ use twitch_common::twitch_secrets::TwitchSecrets; use url_config::third_party_url_redirector::ThirdPartyUrlRedirector; use user_traits_component::traits::internal_session_cache_purge::InternalSessionCachePurge; use users_component::cookies::anonymous_visitor_tracking::avt_cookie_manager::AvtCookieManager; -use users_component::session::http::session_cookie_manager::SessionCookieManager; +use users_component::session::http::http_user_session_manager::HttpUserSessionManager; use users_component::session::session_checker::SessionChecker; use crate::billing::internal_product_to_stripe_lookup_impl::InternalProductToStripeLookupImpl; @@ -190,7 +190,7 @@ async fn main() -> AnyhowResult<()> { let website_homepage_redirect = easyenv::get_env_string_or_default("WEBSITE_HOMEPAGE_REDIRECT", "https://vo.codes/"); - let session_cookie_manager = SessionCookieManager::new(&cookie_domain, &hmac_secret)?; + let session_cookie_manager = HttpUserSessionManager::new(&cookie_domain, &hmac_secret)?; let avt_cookie_manager = AvtCookieManager::new(&cookie_domain, &hmac_secret)?; let session_checker = SessionChecker::new_with_cache( diff --git a/crates/service/web/storyteller_web/src/server_state.rs b/crates/service/web/storyteller_web/src/server_state.rs index f9cc760fbd..2b5e74ef58 100644 --- a/crates/service/web/storyteller_web/src/server_state.rs +++ b/crates/service/web/storyteller_web/src/server_state.rs @@ -18,7 +18,7 @@ use redis_caching::redis_ttl_cache::RedisTtlCache; use reusable_types::server_environment::ServerEnvironment; use url_config::third_party_url_redirector::ThirdPartyUrlRedirector; use users_component::cookies::anonymous_visitor_tracking::avt_cookie_manager::AvtCookieManager; -use users_component::session::http::session_cookie_manager::SessionCookieManager; +use users_component::session::http::http_user_session_manager::HttpUserSessionManager; use users_component::session::session_checker::SessionChecker; use crate::configs::app_startup::username_set::UsernameSet; @@ -64,7 +64,7 @@ pub struct ServerState { pub redis_rate_limiters: RedisRateLimiters, - pub session_cookie_manager: SessionCookieManager, + pub session_cookie_manager: HttpUserSessionManager, pub avt_cookie_manager: AvtCookieManager, pub session_checker: SessionChecker,