Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add AccessControlDefaultAdminRules #280

Draft
wants to merge 24 commits into
base: msg-sender-trick
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
bcb5960
Added AccessControlDefaultAdminRules
paradoux Oct 3, 2023
defc7e4
Corrected comments
paradoux Nov 6, 2023
d62dc3a
Refactor comment storage pointer
paradoux Nov 10, 2023
06b9068
Merge branch 'master' into paradoux-implement-access-control-extension
ItsNickBarry Dec 11, 2023
7d09542
update abi
ItsNickBarry Dec 11, 2023
8bd5919
update version pragmas
ItsNickBarry Dec 11, 2023
c0660bf
Merge branch 'master' into paradoux-implement-access-control-extension
ItsNickBarry Feb 28, 2025
25b3c4e
update pragma statements
ItsNickBarry Feb 28, 2025
4a9ac8e
fix inheritance order
ItsNickBarry Feb 28, 2025
0bd9d52
Merge branch 'consolidate-storage' into paradoux-implement-access-con…
ItsNickBarry Mar 16, 2025
aa24702
fix references to _AccessControl and _IAccessControl
ItsNickBarry Mar 16, 2025
bd9bc31
merge AccessControlDefaultAdminRulesStorage into AccessControlStorage…
ItsNickBarry Mar 16, 2025
7f74102
fix AccessControlDefaultAdminRules inheritance pattern
ItsNickBarry Mar 16, 2025
0b475b5
remove AccessControlDefaultAdminRulesMock, update revert tests
ItsNickBarry Mar 16, 2025
ccd81e6
move onlyRole modifiers calls to _AccessControlDefaultAdminRules func…
ItsNickBarry Mar 16, 2025
ca5652d
remove virtual keyword from AccessControlDefaultAdminRules functions
ItsNickBarry Mar 16, 2025
e09e06d
use $ for AccessControlDefaultAdminRules storage references
ItsNickBarry Mar 16, 2025
82477ed
fix revert test
ItsNickBarry Mar 16, 2025
06ba9de
clean up some function declarations
ItsNickBarry Mar 16, 2025
fae3671
Merge branch 'no-git-abi' into paradoux-implement-access-control-exte…
ItsNickBarry Mar 16, 2025
efe2fc7
remove ABIs from git
ItsNickBarry Mar 16, 2025
9aa0e20
Merge branch 'master' into paradoux-implement-access-control-extension
ItsNickBarry Mar 17, 2025
672204b
Merge branch 'msg-sender-trick' into access-control-admin
ItsNickBarry Mar 19, 2025
e28cbc6
retrieve message sender from context
ItsNickBarry Mar 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 117 additions & 0 deletions contracts/access/access_control/AccessControlDefaultAdminRules.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

import { AccessControl } from './AccessControl.sol';
import { _AccessControl } from './_AccessControl.sol';
import { IAccessControlDefaultAdminRules } from './IAccessControlDefaultAdminRules.sol';
import { _AccessControlDefaultAdminRules } from './_AccessControlDefaultAdminRules.sol';

/**
* @title Role-based access control system with default admin rules
* @dev derived from https://github.com/OpenZeppelin/openzeppelin-contracts (MIT license)
*/
abstract contract AccessControlDefaultAdminRules is
IAccessControlDefaultAdminRules,
_AccessControlDefaultAdminRules,
AccessControl
{
/**
* @inheritdoc IAccessControlDefaultAdminRules
*/
function defaultAdmin() external view returns (address) {
return _defaultAdmin();
}

/**
* @inheritdoc IAccessControlDefaultAdminRules
*/
function pendingDefaultAdmin()
external
view
returns (address newAdmin, uint48 acceptSchedule)
{
return _pendingDefaultAdmin();
}

/**
* @inheritdoc IAccessControlDefaultAdminRules
*/
function defaultAdminDelay() external view returns (uint48) {
return _defaultAdminDelay();
}

/**
* @inheritdoc IAccessControlDefaultAdminRules
*/
function pendingDefaultAdminDelay()
external
view
returns (uint48 newDelay, uint48 effectSchedule)
{
return _pendingDefaultAdminDelay();
}

/**
* @inheritdoc IAccessControlDefaultAdminRules
*/
function beginDefaultAdminTransfer(address newAdmin) external {
_beginDefaultAdminTransfer(newAdmin);
}

/**
* @inheritdoc IAccessControlDefaultAdminRules
*/
function cancelDefaultAdminTransfer() external {
_cancelDefaultAdminTransfer();
}

/**
* @inheritdoc IAccessControlDefaultAdminRules
*/
function acceptDefaultAdminTransfer() external {
_acceptDefaultAdminTransfer();
}

/**
* @inheritdoc IAccessControlDefaultAdminRules
*/
function changeDefaultAdminDelay(uint48 newDelay) external {
_changeDefaultAdminDelay(newDelay);
}

/**
* @inheritdoc IAccessControlDefaultAdminRules
*/
function rollbackDefaultAdminDelay() external {
_rollbackDefaultAdminDelay();
}

/**
* @inheritdoc IAccessControlDefaultAdminRules
*/
function defaultAdminDelayIncreaseWait() external view returns (uint48) {
return _defaultAdminDelayIncreaseWait();
}

function _grantRole(
bytes32 role,
address account
) internal override(_AccessControl, _AccessControlDefaultAdminRules) {
super._grantRole(role, account);
}

function _revokeRole(
bytes32 role,
address account
) internal override(_AccessControl, _AccessControlDefaultAdminRules) {
super._revokeRole(role, account);
}

function _setRoleAdmin(
bytes32 role,
bytes32 adminRole
) internal override(_AccessControl, _AccessControlDefaultAdminRules) {
super._setRoleAdmin(role, adminRole);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

import { IAccessControl } from './IAccessControl.sol';
import { _IAccessControlDefaultAdminRules } from './_IAccessControlDefaultAdminRules.sol';

/**
* @title AccessControlDefaultAdminRules interface
*/
interface IAccessControlDefaultAdminRules is
_IAccessControlDefaultAdminRules,
IAccessControl
{
/**
* @notice query default admin
* @return defaultAdmin the default admin
*/
function defaultAdmin() external view returns (address);

/**
* @notice query pending default admin
* @return newAdmin pending default admin
* @return acceptSchedule acceptance schedule
*/
function pendingDefaultAdmin()
external
view
returns (address newAdmin, uint48 acceptSchedule);

/**
* @notice query default admin delay
* @return defaultAdminDelay default admin delay
*/
function defaultAdminDelay() external view returns (uint48);

/**
* @notice query pending default admin delay
* @return newDelay default admin delay
* @return effectSchedule effect schedule
*/
function pendingDefaultAdminDelay()
external
view
returns (uint48 newDelay, uint48 effectSchedule);

/**
* @notice start a default admin transfer
* @param newAdmin new admin
*/
function beginDefaultAdminTransfer(address newAdmin) external;

/**
* @notice cancel a default admin transfer
*/
function cancelDefaultAdminTransfer() external;

/**
* @notice accept a default admin transfer
*/
function acceptDefaultAdminTransfer() external;

/**
* @notice change a default admin delay
* @param newDelay new delay
*/
function changeDefaultAdminDelay(uint48 newDelay) external;

/**
* @notice roll back a default admin delay
*/
function rollbackDefaultAdminDelay() external;

/**
* @notice query default admin delay wait
* @return wait wait
*/
function defaultAdminDelayIncreaseWait() external view returns (uint48);
}
Loading