Skip to content

Commit 5d8e6a1

Browse files
Merge pull request #225 from gildlab/2025-03-07-nix
access control ierc165 authorier
2 parents 2ebcf90 + 8ba7b14 commit 5d8e6a1

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

‎src/concrete/authorize/OffchainAssetReceiptVaultAuthorizerV1.sol‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import {IAuthorizeV1, Unauthorized} from "../../interface/IAuthorizeV1.sol";
66

77
import {AccessControlUpgradeable as AccessControl} from
88
"openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol";
9+
import {IAccessControlUpgradeable as IAccessControl} from
10+
"openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol";
911
import {ICloneableV2, ICLONEABLE_V2_SUCCESS} from "rain.factory/interface/ICloneableV2.sol";
1012
import {
1113
CONFISCATE_RECEIPT,
@@ -119,7 +121,7 @@ contract OffchainAssetReceiptVaultAuthorizerV1 is IAuthorizeV1, ICloneableV2, Ac
119121
/// @inheritdoc IERC165
120122
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
121123
return interfaceId == type(IAuthorizeV1).interfaceId || interfaceId == type(ICloneableV2).interfaceId
122-
|| super.supportsInterface(interfaceId);
124+
|| interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
123125
}
124126

125127
/// Permissions are treated as roles in this implementation. This makes the

‎test/src/concrete/authorize/OffchainAssetReceiptVaultAuthorizerV1.ierc165.t.sol‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,21 @@ import {IERC165} from "openzeppelin-contracts/contracts/utils/introspection/IERC
88
import {OffchainAssetReceiptVaultAuthorizerV1} from "src/concrete/authorize/OffchainAssetReceiptVaultAuthorizerV1.sol";
99
import {IAuthorizeV1} from "src/interface/IAuthorizeV1.sol";
1010
import {ICloneableV2} from "rain.factory/interface/ICloneableV2.sol";
11+
import {IAccessControlUpgradeable as IAccessControl} from
12+
"openzeppelin-contracts-upgradeable/contracts/access/IAccessControlUpgradeable.sol";
1113

1214
contract OffchainAssetReceiptVaultAuthorizerV1Test is Test {
1315
function testOffchainAssetReceiptVaultAuthorizerV1IERC165(bytes4 badInterfaceId) external {
1416
vm.assume(badInterfaceId != type(IERC165).interfaceId);
1517
vm.assume(badInterfaceId != type(ICloneableV2).interfaceId);
1618
vm.assume(badInterfaceId != type(IAuthorizeV1).interfaceId);
19+
vm.assume(badInterfaceId != type(IAccessControl).interfaceId);
1720

1821
OffchainAssetReceiptVaultAuthorizerV1 authorizer = new OffchainAssetReceiptVaultAuthorizerV1();
1922
assertTrue(authorizer.supportsInterface(type(IERC165).interfaceId));
2023
assertTrue(authorizer.supportsInterface(type(ICloneableV2).interfaceId));
2124
assertTrue(authorizer.supportsInterface(type(IAuthorizeV1).interfaceId));
25+
assertTrue(authorizer.supportsInterface(type(IAccessControl).interfaceId));
2226

2327
assertFalse(authorizer.supportsInterface(badInterfaceId));
2428
}

0 commit comments

Comments
 (0)