diff --git a/src/class_character_v2.cairo b/src/class_character_v2.cairo index 8fa3718..ad1ab5e 100644 --- a/src/class_character_v2.cairo +++ b/src/class_character_v2.cairo @@ -1,7 +1,7 @@ #[starknet::contract] mod ClassCharacterV2 { use core::zeroable::Zeroable; -use core::starknet::event::EventEmitter; + use core::starknet::event::EventEmitter; use starknet::{ContractAddress, get_caller_address}; // event diff --git a/src/owner_contract.cairo b/src/owner_contract.cairo index 2ebbc9d..9ed63d5 100644 --- a/src/owner_contract.cairo +++ b/src/owner_contract.cairo @@ -12,12 +12,24 @@ mod OwnerContract { owner: ContractAddress, } + #[abi_embed(v0)] // #[external(v0)] impl OwnableImpl of IOwnable { + // No Access control check + + fn set_ownerr(ref self: ContractState, new_owner: ContractAddress) { + self.owner.write(new_owner); + } + + // Access control check fn set_owner(ref self: ContractState, new_owner: ContractAddress) { + let caller = get_caller_address(); + let owner = self.owner.read(); + assert(caller == owner, 'caller is not owner'); self.owner.write(new_owner); } + fn get_owner(self: @ContractState) -> ContractAddress { self.owner.read() }