Add a virtual _checkRole(bytes32) internal function to AccessControl (#3137)
* add a virtual _onlyRole(bytes32) modifier * _onlyRole(role) → _checkRole(role) * update doc
This commit is contained in:
@ -1,5 +1,9 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
* `AccessControl`: add a virtual `_checkRole(bytes32)` function that can be overriden to alter the the `onlyRole` modifier behavior. ([#3137](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3137))
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
* `ERC2981`: add implementation of the royalty standard, and the respective extensions for `ERC721` and `ERC1155`. ([#3012](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3012))
|
* `ERC2981`: add implementation of the royalty standard, and the respective extensions for `ERC721` and `ERC1155`. ([#3012](https://github.com/OpenZeppelin/openzeppelin-contracts/pull/3012))
|
||||||
|
|||||||
@ -67,7 +67,7 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 {
|
|||||||
* _Available since v4.1._
|
* _Available since v4.1._
|
||||||
*/
|
*/
|
||||||
modifier onlyRole(bytes32 role) {
|
modifier onlyRole(bytes32 role) {
|
||||||
_checkRole(role, _msgSender());
|
_checkRole(role);
|
||||||
_;
|
_;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,6 +85,18 @@ abstract contract AccessControl is Context, IAccessControl, ERC165 {
|
|||||||
return _roles[role].members[account];
|
return _roles[role].members[account];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Revert with a standard message if `_msgSender()` is missing `role`.
|
||||||
|
* Overriding this function changes the behavior of the {onlyRole} modifier.
|
||||||
|
*
|
||||||
|
* Format of the revert message is described in {_checkRole}.
|
||||||
|
*
|
||||||
|
* _Available since v4.6._
|
||||||
|
*/
|
||||||
|
function _checkRole(bytes32 role) internal view virtual {
|
||||||
|
_checkRole(role, _msgSender());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev Revert with a standard message if `account` is missing `role`.
|
* @dev Revert with a standard message if `account` is missing `role`.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user