Skip to content

Commit 951fe1f

Browse files
committed
feat(access-manager): nested reentrant execute
1 parent ec1e5cf commit 951fe1f

File tree

4 files changed

+284
-115
lines changed

4 files changed

+284
-115
lines changed

e2e/access-managed-example/src/lib.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ use std::num::NonZero;
33
use access_managed::{
44
handle_consume_scheduled_op_reply, state::Authority, EnsureCanCallResult, Restricted,
55
};
6-
use access_manager_types::managed::msg::{InitMsg, MigrateMsg};
6+
use access_manager_types::{
7+
managed::msg::{InitMsg, MigrateMsg},
8+
manager,
9+
};
710
use cosmwasm_std::{
811
entry_point, to_json_binary, wasm_execute, Binary, Deps, DepsMut, Env, Event, MessageInfo,
912
Reply, Response, StdError, SubMsg,
@@ -114,6 +117,20 @@ pub fn execute(
114117
.add_event(Event::new("counter").add_attribute("value", new_value.to_string())))
115118
}
116119
ExecuteMsg::Noop {} => Ok(Response::new().add_event(Event::new("noop"))),
120+
ExecuteMsg::DelegateExecute { target, data } => {
121+
Ok(Response::new().add_message(wasm_execute(
122+
deps.storage.read_item::<Authority>()?,
123+
&manager::msg::ExecuteMsg::Execute { target, data },
124+
vec![],
125+
)?))
126+
}
127+
ExecuteMsg::DelegateSchedule { target, data, when } => {
128+
Ok(Response::new().add_message(wasm_execute(
129+
deps.storage.read_item::<Authority>()?,
130+
&manager::msg::ExecuteMsg::Schedule { target, data, when },
131+
vec![],
132+
)?))
133+
}
117134
ExecuteMsg::AccessManaged(msg) => {
118135
access_managed::execute(deps, env, info, msg).map_err(Into::into)
119136
}

e2e/access-managed-example/src/msg.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use cosmwasm_std::Addr;
12
use serde::{Deserialize, Serialize};
23

34
#[derive(Debug, PartialEq, Serialize, Deserialize)]
@@ -17,6 +18,15 @@ pub enum ExecuteMsg {
1718
by: u32,
1819
},
1920
Noop {},
21+
DelegateExecute {
22+
target: Addr,
23+
data: String,
24+
},
25+
DelegateSchedule {
26+
target: Addr,
27+
data: String,
28+
when: u64,
29+
},
2030
#[serde(untagged)]
2131
AccessManaged(access_manager_types::managed::msg::ExecuteMsg),
2232
}

0 commit comments

Comments
 (0)