dsa-connectors/contracts/mapping/InstaMappings.sol

38 lines
1.1 KiB
Solidity
Raw Normal View History

2021-05-04 11:47:04 +00:00
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;
import {InstaAccessControl} from "./InstaAccessControl.sol";
2021-05-04 11:47:04 +00:00
contract InstaMappings is InstaAccessControl {
function getMappingContractRole(address mappingContract)
public
pure
returns (bytes32 role)
{
2021-05-09 16:01:04 +00:00
bytes memory encoded = abi.encode(mappingContract);
2021-05-04 11:47:04 +00:00
assembly {
2021-05-09 16:01:04 +00:00
role := mload(add(encoded, 32))
2021-05-04 11:47:04 +00:00
}
}
function hasRole(address mappingAddr, address account)
public
view
returns (bool)
{
2021-05-04 11:47:04 +00:00
return super.hasRole(getMappingContractRole(mappingAddr), account);
}
function grantRole(address mappingAddr, address account) public {
super.grantRole(getMappingContractRole(mappingAddr), account);
}
function revokeRole(address mappingAddr, address account) public {
super.revokeRole(getMappingContractRole(mappingAddr), account);
}
function renounceRole(address mappingAddr, address account) public {
super.renounceRole(getMappingContractRole(mappingAddr), account);
}
}