Skip to content

Commit 3840c53

Browse files
committed
fix: only allow owner role assignments
1 parent 5e3269f commit 3840c53

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

contracts/0.8.25/vaults/VaultFactory.sol

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,19 @@ contract VaultFactory {
8181
// initialize Dashboard with the factory address as the default admin, grant optional roles and connect to VaultHub
8282
dashboard.initialize(address(this), address(this), _nodeOperatorManager, _nodeOperatorFeeBP, _confirmExpiry);
8383

84-
if (_roleAssignments.length > 0) dashboard.grantRoles(_roleAssignments);
85-
8684
// connection must be pre-approved by the node operator manager
8785
dashboard.setApprovedToConnect(true);
8886
dashboard.connectToVaultHub{value: msg.value}();
8987

90-
dashboard.grantRole(dashboard.DEFAULT_ADMIN_ROLE(), _defaultAdmin);
9188
dashboard.grantRole(dashboard.NODE_OPERATOR_MANAGER_ROLE(), _nodeOperatorManager);
92-
dashboard.revokeRole(dashboard.DEFAULT_ADMIN_ROLE(), address(this));
9389
dashboard.revokeRole(dashboard.NODE_OPERATOR_MANAGER_ROLE(), address(this));
90+
91+
// _roleAssignments can only include DEFAULT_ADMIN_ROLE's subroles,
92+
// which is why it's important to revoke the NODE_OPERATOR_MANAGER_ROLE BEFORE granting roles
93+
if (_roleAssignments.length > 0) dashboard.grantRoles(_roleAssignments);
94+
95+
dashboard.grantRole(dashboard.DEFAULT_ADMIN_ROLE(), _defaultAdmin);
96+
dashboard.revokeRole(dashboard.DEFAULT_ADMIN_ROLE(), address(this));
9497

9598
emit VaultCreated(address(vault));
9699
emit DashboardCreated(address(dashboard), address(vault), _defaultAdmin);

0 commit comments

Comments
 (0)