SignerRole.sol 940 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. pragma solidity ^0.5.7;
  2. import "../Roles.sol";
  3. contract SignerRole {
  4. using Roles for Roles.Role;
  5. event SignerAdded(address indexed account);
  6. event SignerRemoved(address indexed account);
  7. Roles.Role private _signers;
  8. constructor () internal {
  9. _addSigner(msg.sender);
  10. }
  11. modifier onlySigner() {
  12. require(isSigner(msg.sender));
  13. _;
  14. }
  15. function isSigner(address account) public view returns (bool) {
  16. return _signers.has(account);
  17. }
  18. function addSigner(address account) public onlySigner {
  19. _addSigner(account);
  20. }
  21. function renounceSigner() public {
  22. _removeSigner(msg.sender);
  23. }
  24. function _addSigner(address account) internal {
  25. _signers.add(account);
  26. emit SignerAdded(account);
  27. }
  28. function _removeSigner(address account) internal {
  29. _signers.remove(account);
  30. emit SignerRemoved(account);
  31. }
  32. }