defuse/contract/
admin.rs

1use defuse_admin_utils::full_access_keys::FullAccessKeys;
2use near_plugins::{AccessControllable, access_control_any};
3use near_sdk::{Promise, PublicKey, assert_one_yocto, env, near};
4
5use super::{Contract, ContractExt, Role};
6
7#[near]
8impl FullAccessKeys for Contract {
9    #[access_control_any(roles(Role::DAO))]
10    #[payable]
11    fn add_full_access_key(&mut self, public_key: PublicKey) -> Promise {
12        assert_one_yocto();
13        Promise::new(env::current_account_id()).add_full_access_key(public_key)
14    }
15
16    #[access_control_any(roles(Role::DAO))]
17    #[payable]
18    fn delete_key(&mut self, public_key: PublicKey) -> Promise {
19        assert_one_yocto();
20        Promise::new(env::current_account_id()).delete_key(public_key)
21    }
22}