@@ -42,7 +42,7 @@ contract LidoTemplate is IsContract {
42
42
string private constant ERROR_BAD_AMOUNTS_LEN = "TMPL_BAD_AMOUNTS_LEN " ;
43
43
string private constant ERROR_INVALID_ID = "TMPL_INVALID_ID " ;
44
44
string private constant ERROR_UNEXPECTED_TOTAL_SUPPLY = "TMPL_UNEXPECTED_TOTAL_SUPPLY " ;
45
- string private constant ERROR_INVALID_DG_ADMIN_EXECUTOR = "TMPL_INVALID_DG_ADMIN_EXECUTOR " ;
45
+ string private constant ERROR_INVALID_DG_ADMIN_EXECUTOR = "TMPL_0_ADDR " ;
46
46
47
47
// Operational errors
48
48
string private constant ERROR_PERMISSION_DENIED = "TMPL_PERMISSION_DENIED " ;
@@ -414,39 +414,17 @@ contract LidoTemplate is IsContract {
414
414
function finalizePermissionsAfterDGDeployment (address dgAdminExecutor ) external onlyOwner {
415
415
require (dgAdminExecutor != address (0 ), ERROR_INVALID_DG_ADMIN_EXECUTOR);
416
416
417
- DeployState memory state = deployState;
418
-
419
- state.acl.grantPermission (dgAdminExecutor, address (state.agent), state.agent.RUN_SCRIPT_ROLE ());
420
- state.acl.grantPermission (dgAdminExecutor, address (state.agent), state.agent.EXECUTE_ROLE ());
421
-
422
- state.acl.revokePermission (address (state.voting), address (state.agent), state.agent.RUN_SCRIPT_ROLE ());
423
- state.acl.revokePermission (address (state.voting), address (state.agent), state.agent.EXECUTE_ROLE ());
424
-
425
- state.acl.setPermissionManager (address (state.agent), address (state.agent), state.agent.RUN_SCRIPT_ROLE ());
426
- state.acl.setPermissionManager (address (state.agent), address (state.agent), state.agent.EXECUTE_ROLE ());
427
-
428
- Kernel apmDAO = Kernel (state.lidoRegistry.kernel ());
429
- ACL apmACL = ACL (apmDAO.acl ());
430
- _transferPermissionFromTemplate (apmACL, apmACL, address (state.agent), apmACL.CREATE_PERMISSIONS_ROLE ());
417
+ deployState.acl.grantPermission (dgAdminExecutor, address (deployState.agent), deployState.agent.RUN_SCRIPT_ROLE ());
418
+ deployState.acl.grantPermission (dgAdminExecutor, address (deployState.agent), deployState.agent.EXECUTE_ROLE ());
431
419
432
- _transferPermissionFromTemplate (state.acl, address (state.acl), address (state.agent), state.acl.CREATE_PERMISSIONS_ROLE (), address (state.agent));
420
+ deployState.acl.revokePermission (address (deployState.voting), address (deployState.agent), deployState.agent.RUN_SCRIPT_ROLE ());
421
+ deployState.acl.revokePermission (address (deployState.voting), address (deployState.agent), deployState.agent.EXECUTE_ROLE ());
433
422
434
- _resetState ( );
423
+ _finalizePermissions ( address (deployState.agent) );
435
424
}
436
425
437
426
function finalizePermissionsWithoutDGDeployment () external onlyOwner {
438
- DeployState memory state = deployState;
439
-
440
- state.acl.setPermissionManager (address (state.voting), address (state.agent), state.agent.RUN_SCRIPT_ROLE ());
441
- state.acl.setPermissionManager (address (state.voting), address (state.agent), state.agent.EXECUTE_ROLE ());
442
-
443
- Kernel apmDAO = Kernel (state.lidoRegistry.kernel ());
444
- ACL apmACL = ACL (apmDAO.acl ());
445
- _transferPermissionFromTemplate (apmACL, apmACL, address (state.agent), apmACL.CREATE_PERMISSIONS_ROLE ());
446
-
447
- _transferPermissionFromTemplate (state.acl, address (state.acl), address (state.voting), state.acl.CREATE_PERMISSIONS_ROLE (), address (state.voting));
448
-
449
- _resetState ();
427
+ _finalizePermissions (address (deployState.voting));
450
428
}
451
429
452
430
/* DAO AND APPS */
@@ -777,4 +755,16 @@ contract LidoTemplate is IsContract {
777
755
delete apmRepos.aragonVoting;
778
756
delete apmRepos;
779
757
}
758
+
759
+ function _finalizePermissions (address newManager ) private {
760
+ deployState.acl.setPermissionManager (newManager, address (deployState.agent), deployState.agent.RUN_SCRIPT_ROLE ());
761
+ deployState.acl.setPermissionManager (newManager, address (deployState.agent), deployState.agent.EXECUTE_ROLE ());
762
+
763
+ ACL apmACL = ACL (deployState.lidoRegistry.kernel ().acl ());
764
+ _transferPermissionFromTemplate (apmACL, apmACL, address (deployState.agent), apmACL.CREATE_PERMISSIONS_ROLE ());
765
+
766
+ _transferPermissionFromTemplate (deployState.acl, address (deployState.acl), newManager, deployState.acl.CREATE_PERMISSIONS_ROLE (), newManager);
767
+
768
+ _resetState ();
769
+ }
780
770
}
0 commit comments