12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- pragma solidity ^0.4.8;
- import '../ownership/rbac/RBAC.sol';
- contract RBACExample is RBAC {
- modifier onlyOwnerOrAdvisor()
- {
- require(
- hasRole(msg.sender, "owner") ||
- hasRole(msg.sender, "advisor")
- );
- _;
- }
- function RBACExample(address[] _advisors)
- public
- {
- addRole(msg.sender, "owner");
- addRole(msg.sender, "advisor");
- for (uint256 i = 0; i < _advisors.length; i++) {
- addRole(_advisors[i], "advisor");
- }
- }
- function onlyOwnersCanDoThis()
- onlyRole("owner")
- view
- external
- {
- }
- function onlyAdvisorsCanDoThis()
- onlyRole("advisor")
- view
- external
- {
- }
- function eitherOwnerOrAdvisorCanDoThis()
- onlyOwnerOrAdvisor
- view
- external
- {
- }
- // owners can remove advisor's role
- function removeAdvisor(address _addr)
- onlyRole("owner")
- public
- {
- // revert if the user isn't an advisor
- // (perhaps you want to soft-fail here instead?)
- checkRole(_addr, "advisor");
- // remove the advisor's role
- removeRole(_addr, "advisor");
- }
- }
|