CapperRole.sol 789 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. pragma solidity ^0.4.24;
  2. import "../Roles.sol";
  3. contract CapperRole {
  4. using Roles for Roles.Role;
  5. event CapperAdded(address indexed account);
  6. event CapperRemoved(address indexed account);
  7. Roles.Role private cappers;
  8. constructor() public {
  9. cappers.add(msg.sender);
  10. }
  11. modifier onlyCapper() {
  12. require(isCapper(msg.sender));
  13. _;
  14. }
  15. function isCapper(address _account) public view returns (bool) {
  16. return cappers.has(_account);
  17. }
  18. function addCapper(address _account) public onlyCapper {
  19. cappers.add(_account);
  20. emit CapperAdded(_account);
  21. }
  22. function renounceCapper() public {
  23. cappers.remove(msg.sender);
  24. }
  25. function _removeCapper(address _account) internal {
  26. cappers.remove(_account);
  27. emit CapperRemoved(_account);
  28. }
  29. }