feat(roles): Add caching for custom roles (#3946)

This commit is contained in:
Mani Chandra
2024-03-05 18:56:09 +05:30
committed by GitHub
parent f6f6a0c0f7
commit 19c502398f
12 changed files with 191 additions and 31 deletions

View File

@ -94,6 +94,7 @@ pub async fn signup(
)
.await?;
let token = utils::user::generate_jwt_auth_token(&state, &user_from_db, &user_role).await?;
utils::user_role::set_role_permissions_in_cache_by_user_role(&state, &user_role).await;
Ok(ApplicationResponse::Json(
utils::user::get_dashboard_entry_response(&state, user_from_db, user_role, token)?,
@ -121,6 +122,7 @@ pub async fn signin_without_invite_checks(
let user_role = user_from_db.get_role_from_db(state.clone()).await?;
let token = utils::user::generate_jwt_auth_token(&state, &user_from_db, &user_role).await?;
utils::user_role::set_role_permissions_in_cache_by_user_role(&state, &user_role).await;
Ok(ApplicationResponse::Json(
utils::user::get_dashboard_entry_response(&state, user_from_db, user_role, token)?,
@ -966,6 +968,8 @@ pub async fn accept_invite_from_email(
let token =
utils::user::generate_jwt_auth_token(&state, &user_from_db, &update_status_result).await?;
utils::user_role::set_role_permissions_in_cache_by_user_role(&state, &update_status_result)
.await;
Ok(ApplicationResponse::Json(
utils::user::get_dashboard_entry_response(
@ -1044,7 +1048,7 @@ pub async fn switch_merchant_id(
state: AppState,
request: user_api::SwitchMerchantIdRequest,
user_from_token: auth::UserFromToken,
) -> UserResponse<user_api::SwitchMerchantResponse> {
) -> UserResponse<user_api::DashboardEntryResponse> {
if user_from_token.merchant_id == request.merchant_id {
return Err(UserErrors::InvalidRoleOperationWithMessage(
"User switching to same merchant id".to_string(),
@ -1093,13 +1097,14 @@ pub async fn switch_merchant_id(
.organization_id;
let token = utils::user::generate_jwt_auth_token_with_custom_role_attributes(
state,
&state,
&user,
request.merchant_id.clone(),
org_id,
org_id.clone(),
user_from_token.role_id.clone(),
)
.await?;
(token, user_from_token.role_id)
} else {
let user_roles = state
@ -1120,11 +1125,13 @@ pub async fn switch_merchant_id(
.attach_printable("User doesn't have access to switch")?;
let token = utils::user::generate_jwt_auth_token(&state, &user, user_role).await?;
utils::user_role::set_role_permissions_in_cache_by_user_role(&state, user_role).await;
(token, user_role.role_id.clone())
};
Ok(ApplicationResponse::Json(
user_api::SwitchMerchantResponse {
user_api::DashboardEntryResponse {
token,
name: user.get_name(),
email: user.get_email(),
@ -1266,6 +1273,7 @@ pub async fn verify_email_without_invite_checks(
.await
.map_err(|e| logger::error!(?e));
let token = utils::user::generate_jwt_auth_token(&state, &user_from_db, &user_role).await?;
utils::user_role::set_role_permissions_in_cache_by_user_role(&state, &user_role).await;
Ok(ApplicationResponse::Json(
utils::user::get_dashboard_entry_response(&state, user_from_db, user_role, token)?,