RBACMintableToken.sol 932 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. pragma solidity ^0.4.24;
  2. import "./MintableToken.sol";
  3. import "../../access/rbac/RBAC.sol";
  4. /**
  5. * @title RBACMintableToken
  6. * @author Vittorio Minacori (@vittominacori)
  7. * @dev Mintable Token, with RBAC minter permissions
  8. */
  9. contract RBACMintableToken is MintableToken, RBAC {
  10. /**
  11. * A constant role name for indicating minters.
  12. */
  13. string public constant ROLE_MINTER = "minter";
  14. /**
  15. * @dev override the Mintable token modifier to add role based logic
  16. */
  17. modifier hasMintPermission() {
  18. checkRole(msg.sender, ROLE_MINTER);
  19. _;
  20. }
  21. /**
  22. * @dev add a minter role to an address
  23. * @param _minter address
  24. */
  25. function addMinter(address _minter) public onlyOwner {
  26. addRole(_minter, ROLE_MINTER);
  27. }
  28. /**
  29. * @dev remove a minter role from an address
  30. * @param _minter address
  31. */
  32. function removeMinter(address _minter) public onlyOwner {
  33. removeRole(_minter, ROLE_MINTER);
  34. }
  35. }