From 6dab43c3a94a45bc587d71096dd03d38887a32c2 Mon Sep 17 00:00:00 2001 From: Hadrien Croubois Date: Mon, 8 Nov 2021 16:22:13 +0100 Subject: [PATCH] AccessControlEnumerable: Hook into the internal function (#2946) * AccessControlEnumerable: Hook into the internal function * add changelog entry (cherry picked from commit 7579828180c06d761edefb6579bbcc2dc5adf4c7) --- CHANGELOG.md | 1 + contracts/access/AccessControlEnumerable.sol | 28 +++++--------------- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index add49146a09..936696e2a48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * `Ownable`: add an internal `_transferOwnership(address)`. ([#2568](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2568)) * `AccessControl`: add internal `_grantRole(bytes32,address)` and `_revokeRole(bytes32,address)`. ([#2568](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2568)) * `AccessControl`: mark `_setupRole(bytes32,address)` as deprecated in favor of `_grantRole(bytes32,address)`. ([#2568](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2568)) + * `AccessControlEnumerable`: hook into `_grantRole(bytes32,address)` and `_revokeRole(bytes32,address)`. ([#2946](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2946)) * `EIP712`: cache `address(this)` to immutable storage to avoid potential issues if a vanilla contract is used in a delegatecall context. ([#2852](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2852)) * Add internal `_setApprovalForAll` to `ERC721` and `ERC1155`. ([#2834](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2834)) * `Governor`: shift vote start and end by one block to better match Compound's GovernorBravo and prevent voting at the Governor level if the voting snapshot is not ready. ([#2892](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/2892)) diff --git a/contracts/access/AccessControlEnumerable.sol b/contracts/access/AccessControlEnumerable.sol index 4d6a0da35df..f9068801d78 100644 --- a/contracts/access/AccessControlEnumerable.sol +++ b/contracts/access/AccessControlEnumerable.sol @@ -47,34 +47,18 @@ abstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessCon } /** - * @dev Overload {grantRole} to track enumerable memberships + * @dev Overload {_grantRole} to track enumerable memberships */ - function grantRole(bytes32 role, address account) public virtual override(AccessControl, IAccessControl) { - super.grantRole(role, account); + function _grantRole(bytes32 role, address account) internal virtual override { + super._grantRole(role, account); _roleMembers[role].add(account); } /** - * @dev Overload {revokeRole} to track enumerable memberships + * @dev Overload {_revokeRole} to track enumerable memberships */ - function revokeRole(bytes32 role, address account) public virtual override(AccessControl, IAccessControl) { - super.revokeRole(role, account); + function _revokeRole(bytes32 role, address account) internal virtual override { + super._revokeRole(role, account); _roleMembers[role].remove(account); } - - /** - * @dev Overload {renounceRole} to track enumerable memberships - */ - function renounceRole(bytes32 role, address account) public virtual override(AccessControl, IAccessControl) { - super.renounceRole(role, account); - _roleMembers[role].remove(account); - } - - /** - * @dev Overload {_setupRole} to track enumerable memberships - */ - function _setupRole(bytes32 role, address account) internal virtual override { - super._setupRole(role, account); - _roleMembers[role].add(account); - } }