|
@@ -52,6 +52,14 @@ abstract contract AccessControl is Context {
|
|
|
|
|
|
bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
|
|
|
|
|
|
+ /**
|
|
|
+ * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
|
|
|
+ *
|
|
|
+ * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
|
|
|
+ * {RoleAdminChanged} not being emitted signaling this.
|
|
|
+ */
|
|
|
+ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
|
|
|
+
|
|
|
/**
|
|
|
* @dev Emitted when `account` is granted `role`.
|
|
|
*
|
|
@@ -183,8 +191,11 @@ abstract contract AccessControl is Context {
|
|
|
|
|
|
/**
|
|
|
* @dev Sets `adminRole` as ``role``'s admin role.
|
|
|
+ *
|
|
|
+ * Emits a {RoleAdminChanged} event.
|
|
|
*/
|
|
|
function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
|
|
|
+ emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);
|
|
|
_roles[role].adminRole = adminRole;
|
|
|
}
|
|
|
|