pragma solidity ^0.6.0;
import "./DynamicAccessControl.sol";
import "./RoleSets.sol";
contract ControlledContract is DynamicAccessControl {
using RoleSets for RoleSets.RoleSet;
RoleSets.RoleSet rootRoleSet;
RoleSets.RoleSet secondaryRoleSet;
RoleSets.RoleSet tertiaryRoleSet;
bytes32 public constant ROOT_ROLE_SET = 0x00;
constructor() public DynamicAccessControl(msg.sender) {
rootRoleSet.addRoleId(ROOT_ROLE_SET);
secondaryRoleSet.addRoleId(ROOT_ROLE_SET);
tertiaryRoleSet.addRoleId(ROOT_ROLE_SET);
}
function addRoleToSecondarySet(bytes32 _roleId) public onlyMembersOf(rootRoleSet.roleIds){
secondaryRoleSet.addRoleId(_roleId);
}
function addRoleToTertiarySet(bytes32 _roleId) public onlyMembersOf(secondaryRoleSet.roleIds){
tertiaryRoleSet.addRoleId(_roleId);
}
}