// SPDX-License-Identifier: MIT pragma solidity 0.6.12; import "@openzeppelin/contracts/access/Ownable.sol"; contract Authorizable is Ownable { mapping(address => bool) public authorized; modifier onlyAuthorized() { require(authorized[msg.sender] || owner() == msg.sender); _; } function addAuthorized(address _toAdd) public onlyOwner { authorized[_toAdd] = true; } function removeAuthorized(address _toRemove) public onlyOwner { require(_toRemove != msg.sender); authorized[_toRemove] = false; } }