mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-28 20:23:43 +08:00
fix(user): blacklist token after delete user role (#4428)
This commit is contained in:
@ -70,8 +70,8 @@ impl UserRole {
|
||||
conn: &PgPooledConn,
|
||||
user_id: String,
|
||||
merchant_id: String,
|
||||
) -> StorageResult<bool> {
|
||||
generics::generic_delete::<<Self as HasTable>::Table, _>(
|
||||
) -> StorageResult<Self> {
|
||||
generics::generic_delete_one_with_result::<<Self as HasTable>::Table, _, _>(
|
||||
conn,
|
||||
dsl::user_id
|
||||
.eq(user_id)
|
||||
|
||||
@ -282,7 +282,7 @@ pub async fn delete_user_role(
|
||||
}
|
||||
};
|
||||
|
||||
if user_roles.len() > 1 {
|
||||
let deleted_user_role = if user_roles.len() > 1 {
|
||||
state
|
||||
.store
|
||||
.delete_user_role_by_user_id_merchant_id(
|
||||
@ -291,9 +291,7 @@ pub async fn delete_user_role(
|
||||
)
|
||||
.await
|
||||
.change_context(UserErrors::InternalServerError)
|
||||
.attach_printable("Error while deleting user role")?;
|
||||
|
||||
Ok(ApplicationResponse::StatusOk)
|
||||
.attach_printable("Error while deleting user role")?
|
||||
} else {
|
||||
state
|
||||
.store
|
||||
@ -310,8 +308,9 @@ pub async fn delete_user_role(
|
||||
)
|
||||
.await
|
||||
.change_context(UserErrors::InternalServerError)
|
||||
.attach_printable("Error while deleting user role")?;
|
||||
.attach_printable("Error while deleting user role")?
|
||||
};
|
||||
|
||||
Ok(ApplicationResponse::StatusOk)
|
||||
}
|
||||
auth::blacklist::insert_user_in_blacklist(&state, &deleted_user_role.user_id).await?;
|
||||
Ok(ApplicationResponse::StatusOk)
|
||||
}
|
||||
|
||||
@ -2376,7 +2376,7 @@ impl UserRoleInterface for KafkaStore {
|
||||
&self,
|
||||
user_id: &str,
|
||||
merchant_id: &str,
|
||||
) -> CustomResult<bool, errors::StorageError> {
|
||||
) -> CustomResult<user_storage::UserRole, errors::StorageError> {
|
||||
self.diesel_store
|
||||
.delete_user_role_by_user_id_merchant_id(user_id, merchant_id)
|
||||
.await
|
||||
|
||||
@ -48,7 +48,7 @@ pub trait UserRoleInterface {
|
||||
&self,
|
||||
user_id: &str,
|
||||
merchant_id: &str,
|
||||
) -> CustomResult<bool, errors::StorageError>;
|
||||
) -> CustomResult<storage::UserRole, errors::StorageError>;
|
||||
|
||||
async fn list_user_roles_by_user_id(
|
||||
&self,
|
||||
@ -145,8 +145,9 @@ impl UserRoleInterface for Store {
|
||||
&self,
|
||||
user_id: &str,
|
||||
merchant_id: &str,
|
||||
) -> CustomResult<bool, errors::StorageError> {
|
||||
) -> CustomResult<storage::UserRole, errors::StorageError> {
|
||||
let conn = connection::pg_connection_write(self).await?;
|
||||
|
||||
storage::UserRole::delete_by_user_id_merchant_id(
|
||||
&conn,
|
||||
user_id.to_owned(),
|
||||
@ -459,18 +460,19 @@ impl UserRoleInterface for MockDb {
|
||||
&self,
|
||||
user_id: &str,
|
||||
merchant_id: &str,
|
||||
) -> CustomResult<bool, errors::StorageError> {
|
||||
) -> CustomResult<storage::UserRole, errors::StorageError> {
|
||||
let mut user_roles = self.user_roles.lock().await;
|
||||
let user_role_index = user_roles
|
||||
|
||||
match user_roles
|
||||
.iter()
|
||||
.position(|user_role| {
|
||||
user_role.user_id == user_id && user_role.merchant_id == merchant_id
|
||||
})
|
||||
.ok_or(errors::StorageError::ValueNotFound(format!(
|
||||
"No user available for user_id = {user_id}"
|
||||
)))?;
|
||||
user_roles.remove(user_role_index);
|
||||
Ok(true)
|
||||
.position(|role| role.user_id == user_id && role.merchant_id == merchant_id)
|
||||
{
|
||||
Some(index) => Ok(user_roles.remove(index)),
|
||||
None => Err(errors::StorageError::ValueNotFound(
|
||||
"Cannot find user role to delete".to_string(),
|
||||
)
|
||||
.into()),
|
||||
}
|
||||
}
|
||||
|
||||
async fn list_user_roles_by_user_id(
|
||||
@ -521,7 +523,7 @@ impl UserRoleInterface for super::KafkaStore {
|
||||
&self,
|
||||
user_id: &str,
|
||||
merchant_id: &str,
|
||||
) -> CustomResult<bool, errors::StorageError> {
|
||||
) -> CustomResult<storage::UserRole, errors::StorageError> {
|
||||
self.diesel_store
|
||||
.delete_user_role_by_user_id_merchant_id(user_id, merchant_id)
|
||||
.await
|
||||
|
||||
Reference in New Issue
Block a user