support controller init and modifiers for model access.
This commit is contained in:
parent
fe7e4cdf7e
commit
cf99ee5b6a
|
@ -5,35 +5,50 @@ import "./DelegationAbstract.sol";
|
||||||
/**
|
/**
|
||||||
* @title DelegationInit
|
* @title DelegationInit
|
||||||
* @author Ricardo Guilherme Schmidt (Status Research & Development GmbH)
|
* @author Ricardo Guilherme Schmidt (Status Research & Development GmbH)
|
||||||
|
* @notice Initialization Model for Delegation. Is library of functions to initialize instance as Delegation.
|
||||||
*/
|
*/
|
||||||
contract DelegationInit is DelegationAbstract {
|
contract DelegationInit is DelegationAbstract {
|
||||||
|
|
||||||
|
modifier notInModel { //avoids control of Init contract
|
||||||
|
require(address(parentDelegation) == address(0), "Bad call");
|
||||||
|
_;
|
||||||
|
}
|
||||||
|
|
||||||
|
modifier notImplemented {
|
||||||
|
revert("Wrong model");
|
||||||
|
_;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @notice Constructor of the model - only knows about watchdog that can trigger upgrade
|
* @notice Constructor of the model
|
||||||
*/
|
*/
|
||||||
constructor() public {
|
constructor() public {
|
||||||
parentDelegation = Delegation(address(-1)); //avoids calling create delegation within the Init contract.
|
parentDelegation = Delegation(address(-1)); //avoids calling create delegation within the Init contract.
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @notice Creates a new Delegation with `_parentDelegation` as default delegation.
|
* @notice Creates a new Delegation with parent as `_parentDelegation`
|
||||||
|
* @param _parentDelegation lookup delegation of unset users
|
||||||
*/
|
*/
|
||||||
function createDelegation(Delegation _parentDelegation) external {
|
function createDelegation(Delegation _parentDelegation) external notInModel {
|
||||||
require(address(parentDelegation) == address(0), "Bad call"); //avoids control of Init contract
|
|
||||||
parentDelegation = _parentDelegation;
|
parentDelegation = _parentDelegation;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @notice Creates a new Delegation with `_parentDelegation` as default delegation.
|
* @notice Creates a new Delegation with `_parentDelegation` as default delegation.
|
||||||
*/
|
*/
|
||||||
function createDelegation(Delegation _parentDelegation, address defaultDelegate) external {
|
function createDelegation(
|
||||||
require(address(parentDelegation) == address(0), "Bad call"); //avoids control of Init contract
|
Delegation _parentDelegation,
|
||||||
|
address payable _controller,
|
||||||
|
address _defaultDelegate
|
||||||
|
) external notInModel {
|
||||||
|
controller = _controller;
|
||||||
parentDelegation = _parentDelegation;
|
parentDelegation = _parentDelegation;
|
||||||
updateDelegate(address(0), defaultDelegate);
|
updateDelegate(address(0), _defaultDelegate);
|
||||||
}
|
}
|
||||||
|
|
||||||
function delegate(address) external {}
|
function delegate(address) external notImplemented {}
|
||||||
function delegatedTo(address) external view returns (address) {}
|
function delegatedTo(address) external view notImplemented returns (address) {}
|
||||||
function delegatedToAt(address,uint) external view returns (address) {}
|
function delegatedToAt(address,uint) external view notImplemented returns (address) {}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue