pragma solidity 0.5.17; import "./Owned.sol"; /** * @title Managed * @author Authereum Labs, Inc. * @dev Basic contract that defines a set of managers. Only the owner can add/remove managers. */ contract Managed is Owned { // The managers mapping(address => bool) public managers; /// @dev Throws if the sender is not a manager modifier onlyManager { require(managers[msg.sender] == true, "M: Must be manager"); _; } event ManagerAdded(address indexed _manager); event ManagerRevoked(address indexed _manager); /// @dev Adds a manager /// @param _manager The address of the manager function addManager(address _manager) external onlyOwner { require(_manager != address(0), "M: Address must not be null"); if(managers[_manager] == false) { managers[_manager] = true; emit ManagerAdded(_manager); } } /// @dev Revokes a manager /// @param _manager The address of the manager function revokeManager(address _manager) external onlyOwner { require(managers[_manager] == true, "M: Target must be an existing manager"); delete managers[_manager]; emit ManagerRevoked(_manager); } }