diff --git a/protobufs/evm.proto b/protobufs/evm.proto index 4f7f910..526f645 100644 --- a/protobufs/evm.proto +++ b/protobufs/evm.proto @@ -90,6 +90,7 @@ message EvmGrantCreateResponse { message EvmGrantDeleteRequest { int32 grant_id = 1; + int32 wallet_access_id = 2; } message EvmGrantDeleteResponse { diff --git a/server/crates/arbiter-server/src/actors/evm/mod.rs b/server/crates/arbiter-server/src/actors/evm/mod.rs index 3acb7a7..81c1670 100644 --- a/server/crates/arbiter-server/src/actors/evm/mod.rs +++ b/server/crates/arbiter-server/src/actors/evm/mod.rs @@ -158,9 +158,13 @@ impl EvmActor { } #[message] - pub async fn useragent_delete_grant(&mut self, grant_id: i32) -> Result<(), Error> { + pub async fn useragent_delete_grant( + &mut self, + grant_id: i32, + wallet_access_id: i32, + ) -> Result<(), Error> { self.engine - .revoke_grant(grant_id) + .revoke_grant(grant_id, wallet_access_id) .await .map_err(Error::from) } diff --git a/server/crates/arbiter-server/src/actors/user_agent/session/connection.rs b/server/crates/arbiter-server/src/actors/user_agent/session/connection.rs index 71f4067..e72b359 100644 --- a/server/crates/arbiter-server/src/actors/user_agent/session/connection.rs +++ b/server/crates/arbiter-server/src/actors/user_agent/session/connection.rs @@ -360,12 +360,13 @@ impl UserAgentSession { pub(crate) async fn handle_grant_delete( &mut self, grant_id: i32, + wallet_access_id: i32, ) -> Result<(), GrantMutationError> { // match self // .props // .actors // .evm - // .ask(UseragentDeleteGrant { grant_id }) + // .ask(UseragentDeleteGrant { grant_id, wallet_access_id }) // .await // { // Ok(()) => Ok(()), @@ -374,7 +375,7 @@ impl UserAgentSession { // Err(GrantMutationError::Internal) // } // } - let _ = grant_id; + let _ = (grant_id, wallet_access_id); todo!() } diff --git a/server/crates/arbiter-server/src/evm/mod.rs b/server/crates/arbiter-server/src/evm/mod.rs index b02e288..c063ce7 100644 --- a/server/crates/arbiter-server/src/evm/mod.rs +++ b/server/crates/arbiter-server/src/evm/mod.rs @@ -276,7 +276,11 @@ impl Engine { Ok(id) } - pub async fn revoke_grant(&self, basic_grant_id: i32) -> Result<(), DatabaseError> { + pub async fn revoke_grant( + &self, + basic_grant_id: i32, + wallet_access_id: i32, + ) -> Result<(), DatabaseError> { let mut conn = self.db.get().await.map_err(DatabaseError::from)?; let keyholder = self.keyholder.clone(); @@ -290,12 +294,14 @@ impl Engine { update(evm_basic_grant::table) .filter(evm_basic_grant::id.eq(basic_grant_id)) + .filter(evm_basic_grant::wallet_access_id.eq(wallet_access_id)) .set(evm_basic_grant::revoked_at.eq(SqliteTimestamp(Utc::now()))) .execute(conn) .await?; let basic_grant: EvmBasicGrant = evm_basic_grant::table .filter(evm_basic_grant::id.eq(basic_grant_id)) + .filter(evm_basic_grant::wallet_access_id.eq(wallet_access_id)) .select(EvmBasicGrant::as_select()) .first(conn) .await?; @@ -799,7 +805,7 @@ mod tests { .await .unwrap(); - engine.revoke_grant(grant_id).await.unwrap(); + engine.revoke_grant(grant_id, WALLET_ACCESS_ID).await.unwrap(); let mut conn = db.get().await.unwrap(); diesel::update(evm_basic_grant::table) diff --git a/server/crates/arbiter-server/src/grpc/user_agent/evm.rs b/server/crates/arbiter-server/src/grpc/user_agent/evm.rs index 28725c2..46246d7 100644 --- a/server/crates/arbiter-server/src/grpc/user_agent/evm.rs +++ b/server/crates/arbiter-server/src/grpc/user_agent/evm.rs @@ -170,6 +170,7 @@ async fn handle_grant_delete( let result = match actor .ask(HandleGrantDelete { grant_id: req.grant_id, + wallet_access_id: req.wallet_access_id, }) .await {