feat(evm): add wallet_access_id to grant deletion requests and revocation logic
This commit is contained in:
@@ -90,6 +90,7 @@ message EvmGrantCreateResponse {
|
|||||||
|
|
||||||
message EvmGrantDeleteRequest {
|
message EvmGrantDeleteRequest {
|
||||||
int32 grant_id = 1;
|
int32 grant_id = 1;
|
||||||
|
int32 wallet_access_id = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message EvmGrantDeleteResponse {
|
message EvmGrantDeleteResponse {
|
||||||
|
|||||||
@@ -158,9 +158,13 @@ impl EvmActor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[message]
|
#[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
|
self.engine
|
||||||
.revoke_grant(grant_id)
|
.revoke_grant(grant_id, wallet_access_id)
|
||||||
.await
|
.await
|
||||||
.map_err(Error::from)
|
.map_err(Error::from)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -360,12 +360,13 @@ impl UserAgentSession {
|
|||||||
pub(crate) async fn handle_grant_delete(
|
pub(crate) async fn handle_grant_delete(
|
||||||
&mut self,
|
&mut self,
|
||||||
grant_id: i32,
|
grant_id: i32,
|
||||||
|
wallet_access_id: i32,
|
||||||
) -> Result<(), GrantMutationError> {
|
) -> Result<(), GrantMutationError> {
|
||||||
// match self
|
// match self
|
||||||
// .props
|
// .props
|
||||||
// .actors
|
// .actors
|
||||||
// .evm
|
// .evm
|
||||||
// .ask(UseragentDeleteGrant { grant_id })
|
// .ask(UseragentDeleteGrant { grant_id, wallet_access_id })
|
||||||
// .await
|
// .await
|
||||||
// {
|
// {
|
||||||
// Ok(()) => Ok(()),
|
// Ok(()) => Ok(()),
|
||||||
@@ -374,7 +375,7 @@ impl UserAgentSession {
|
|||||||
// Err(GrantMutationError::Internal)
|
// Err(GrantMutationError::Internal)
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
let _ = grant_id;
|
let _ = (grant_id, wallet_access_id);
|
||||||
todo!()
|
todo!()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -276,7 +276,11 @@ impl Engine {
|
|||||||
Ok(id)
|
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 mut conn = self.db.get().await.map_err(DatabaseError::from)?;
|
||||||
let keyholder = self.keyholder.clone();
|
let keyholder = self.keyholder.clone();
|
||||||
|
|
||||||
@@ -290,12 +294,14 @@ impl Engine {
|
|||||||
|
|
||||||
update(evm_basic_grant::table)
|
update(evm_basic_grant::table)
|
||||||
.filter(evm_basic_grant::id.eq(basic_grant_id))
|
.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())))
|
.set(evm_basic_grant::revoked_at.eq(SqliteTimestamp(Utc::now())))
|
||||||
.execute(conn)
|
.execute(conn)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let basic_grant: EvmBasicGrant = evm_basic_grant::table
|
let basic_grant: EvmBasicGrant = evm_basic_grant::table
|
||||||
.filter(evm_basic_grant::id.eq(basic_grant_id))
|
.filter(evm_basic_grant::id.eq(basic_grant_id))
|
||||||
|
.filter(evm_basic_grant::wallet_access_id.eq(wallet_access_id))
|
||||||
.select(EvmBasicGrant::as_select())
|
.select(EvmBasicGrant::as_select())
|
||||||
.first(conn)
|
.first(conn)
|
||||||
.await?;
|
.await?;
|
||||||
@@ -799,7 +805,7 @@ mod tests {
|
|||||||
.await
|
.await
|
||||||
.unwrap();
|
.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();
|
let mut conn = db.get().await.unwrap();
|
||||||
diesel::update(evm_basic_grant::table)
|
diesel::update(evm_basic_grant::table)
|
||||||
|
|||||||
@@ -170,6 +170,7 @@ async fn handle_grant_delete(
|
|||||||
let result = match actor
|
let result = match actor
|
||||||
.ask(HandleGrantDelete {
|
.ask(HandleGrantDelete {
|
||||||
grant_id: req.grant_id,
|
grant_id: req.grant_id,
|
||||||
|
wallet_access_id: req.wallet_access_id,
|
||||||
})
|
})
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user