multiversx_sc_modules/
only_admin.rs1multiversx_sc::imports!();
2
3#[multiversx_sc::module]
4pub trait OnlyAdminModule {
5 #[view(isAdmin)]
6 fn is_admin(&self, address: ManagedAddress) -> bool {
7 self.admins().contains(&address)
8 }
9
10 #[only_owner]
11 #[endpoint(addAdmin)]
12 fn add_admin(&self, address: ManagedAddress) {
13 self.admins().insert(address);
14 }
16
17 #[only_owner]
18 #[endpoint(removeAdmin)]
19 fn remove_admin(&self, address: ManagedAddress) {
20 self.admins().swap_remove(&address);
21 }
23
24 #[view(getAdmins)]
25 #[storage_mapper("only_admin_module:admins")]
26 fn admins(&self) -> UnorderedSetMapper<ManagedAddress>;
27
28 fn require_caller_is_admin(&self) {
29 require!(
30 self.is_admin(self.blockchain().get_caller()),
31 "Endpoint can only be called by admins"
32 );
33 }
34}