37 lines
1.0 KiB
Solidity
37 lines
1.0 KiB
Solidity
|
|
/*
|
||
|
|
|
||
|
|
Copyright 2020 DODO ZOO.
|
||
|
|
SPDX-License-Identifier: Apache-2.0
|
||
|
|
|
||
|
|
*/
|
||
|
|
|
||
|
|
pragma solidity 0.6.9;
|
||
|
|
pragma experimental ABIEncoderV2;
|
||
|
|
|
||
|
|
import {InitializableOwnable} from "./InitializableOwnable.sol";
|
||
|
|
|
||
|
|
contract OperatorSystem is InitializableOwnable {
|
||
|
|
mapping(address => bool) internal _global_operator_;
|
||
|
|
mapping(address => mapping(address => bool)) internal _operator_; // user=>operator=>isValid
|
||
|
|
|
||
|
|
function isValidOperator(address user, address operator) external view returns (bool) {
|
||
|
|
return user == operator || _global_operator_[operator] || _operator_[user][operator];
|
||
|
|
}
|
||
|
|
|
||
|
|
function addGlobalOperator(address operator) external onlyOwner {
|
||
|
|
_global_operator_[operator] = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
function removeGlobalOperator(address operator) external onlyOwner {
|
||
|
|
_global_operator_[operator] = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
function addOperator(address operator) external {
|
||
|
|
_operator_[msg.sender][operator] = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
function removeOperator(address operator) external {
|
||
|
|
_operator_[msg.sender][operator] = false;
|
||
|
|
}
|
||
|
|
}
|