dsa-connectors-old/contracts/connectors/authority.sol
2020-05-02 21:52:06 +10:00

77 lines
2.0 KiB
Solidity

pragma solidity ^0.6.0;
/**
* @title ConnectAuth.
* @dev Connector For Adding Authorities.
*/
interface AccountInterface {
function enable(address) external;
function disable(address) external;
}
interface EventInterface {
function emitEvent(uint _connectorType, uint _connectorID, bytes32 _eventCode, bytes calldata _eventData) external;
}
contract Basics {
/**
* @dev Return InstaEvent Address.
*/
function getEventAddr() internal pure returns (address) {
return 0x2af7ea6Cb911035f3eb1ED895Cb6692C39ecbA97;
}
/**
* @dev Connector ID and Type.
*/
function connectorID() public pure returns(uint _type, uint _id) {
(_type, _id) = (1, 10);
}
}
contract Auth is Basics {
event LogAddAuth(address indexed _msgSender, address indexed _authority);
event LogRemoveAuth(address indexed _msgSender, address indexed _authority);
/**
* @dev Add New authority
* @param authority authority Address.
*/
function add(address authority) external payable {
AccountInterface(address(this)).enable(authority);
emit LogAddAuth(msg.sender, authority);
bytes32 _eventCode = keccak256("LogAddAuth(address,address)");
bytes memory _eventParam = abi.encode(msg.sender, authority);
(uint _type, uint _id) = connectorID();
EventInterface(getEventAddr()).emitEvent(_type, _id, _eventCode, _eventParam);
}
/**
* @dev Remove authority
* @param authority authority Address.
*/
function remove(address authority) external payable {
AccountInterface(address(this)).disable(authority);
emit LogRemoveAuth(msg.sender, authority);
bytes32 _eventCode = keccak256("LogRemoveAuth(address,address)");
bytes memory _eventParam = abi.encode(msg.sender, authority);
(uint _type, uint _id) = connectorID();
EventInterface(getEventAddr()).emitEvent(_type, _id, _eventCode, _eventParam);
}
}
contract ConnectAuth is Auth {
string public constant name = "Auth-v1";
}