PauserRole.sol 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. pragma solidity ^0.5.0;
  2. import "../../GSN/Context.sol";
  3. import "../Roles.sol";
  4. contract PauserRole is Context {
  5. using Roles for Roles.Role;
  6. event PauserAdded(address indexed account);
  7. event PauserRemoved(address indexed account);
  8. Roles.Role private _pausers;
  9. constructor () internal {
  10. _addPauser(_msgSender());
  11. }
  12. modifier onlyPauser() {
  13. require(isPauser(_msgSender()), "PauserRole: caller does not have the Pauser role");
  14. _;
  15. }
  16. function isPauser(address account) public view returns (bool) {
  17. return _pausers.has(account);
  18. }
  19. function addPauser(address account) public onlyPauser {
  20. _addPauser(account);
  21. }
  22. function renouncePauser() public {
  23. _removePauser(_msgSender());
  24. }
  25. function _addPauser(address account) internal {
  26. _pausers.add(account);
  27. emit PauserAdded(account);
  28. }
  29. function _removePauser(address account) internal {
  30. _pausers.remove(account);
  31. emit PauserRemoved(account);
  32. }
  33. }