// SPDX-License-Identifier: MIT pragma solidity 0.8.10; import "@openzeppelin/contracts/access/Ownable.sol"; contract Approval is Ownable { mapping(address => bool) private approvalLists; /** * @dev Allow operation to reverse signature. */ function addApprovalList(address user) external onlyOwner { require(!approvalLists[user], "MinterFactory: Invalid user address"); approvalLists[user] = true; } /** * @dev Remove operation from approval list. */ function removeApprovalList(address user) external onlyOwner { approvalLists[user] = false; } modifier approvaled() { require( _msgSender() == address(this) || approvalLists[_msgSender()], "Must be valid approval list" ); _; } }