mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-06 02:00:46 +00:00
clear session cache after beta key enroll
This commit is contained in:
1 parent
836b4396f9
commit
d14400289a
3 files changed
+34
-1
No files matched your search
+3
@@ -38,6 +38,7 @@ use crate::http_server::endpoints::voice_designer::inference::enqueue_tts_reques
|
||||
use crate::http_server::web_utils::require_moderator::RequireModeratorError;
|
||||
use crate::http_server::web_utils::require_user_session::{require_user_session, RequireUserSessionError};
|
||||
use crate::http_server::web_utils::response_error_helpers::to_simple_json_error;
|
||||
use crate::http_server::web_utils::try_delete_session_cache::try_delete_session_cache;
|
||||
use crate::server_state::ServerState;
|
||||
|
||||
#[derive(Deserialize, ToSchema)]
|
||||
@@ -155,6 +156,8 @@ pub async fn redeem_beta_key_handler(
|
||||
}
|
||||
}
|
||||
|
||||
try_delete_session_cache(&http_request, &server_state);
|
||||
|
||||
let response = RedeemBetaKeySuccessResponse {
|
||||
success: true,
|
||||
};
|
||||
|
||||
@@ -6,4 +6,5 @@ pub mod require_moderator;
|
||||
pub mod require_user_session;
|
||||
pub mod response_error_helpers;
|
||||
pub mod response_success_helpers;
|
||||
pub mod serialize_as_json_error;
|
||||
pub mod serialize_as_json_error;
|
||||
pub mod try_delete_session_cache;
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
use actix_web::HttpRequest;
|
||||
use log::info;
|
||||
use redis_common::redis_cache_keys::RedisCacheKeys;
|
||||
use crate::server_state::ServerState;
|
||||
|
||||
pub fn try_delete_session_cache(
|
||||
http_request: &HttpRequest,
|
||||
server_state: &ServerState,
|
||||
) {
|
||||
// TODO: Clear Redis cache of sessions
|
||||
// Unfortunately we don't yet have an index of user_token => session_tokens[] outside the DB.
|
||||
// For now, a hacky solution is just to delete the cache under the current user.
|
||||
// This makes sense for non-mods and should solve 95% of cases.
|
||||
let session_token = match server_state.session_checker.forgiving_get_session_token(&http_request) {
|
||||
None => return,
|
||||
Some(session_token) => session_token,
|
||||
};
|
||||
|
||||
if let Ok(mut redis_ttl_cache) = server_state.redis_ttl_cache.get_connection() {
|
||||
info!("Delete session cache for user.");
|
||||
let keys = vec![
|
||||
RedisCacheKeys::session_record_user(&session_token),
|
||||
RedisCacheKeys::session_record_light(&session_token),
|
||||
];
|
||||
for key in keys.iter() {
|
||||
let _r = redis_ttl_cache.delete_from_cache(key).ok();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user