dsa-connectors/contracts/mapping/InstaMappings.sol

38 lines
1.1 KiB
Solidity

pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;
import {InstaAccessControl} from "./InstaAccessControl.sol";
contract InstaMappings is InstaAccessControl {
function getMappingContractRole(address mappingContract)
public
pure
returns (bytes32 role)
{
bytes memory encoded = abi.encode(mappingContract);
assembly {
role := mload(add(encoded, 32))
}
}
function hasRole(address mappingAddr, address account)
public
view
returns (bool)
{
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);
}
}