Commit 14dd3f66 by Nicolás Venturo

Added sender parameter to initializers using msg.sender.

parent 716efc4b
......@@ -12,9 +12,9 @@ contract CapperRole is Initializable {
Roles.Role private cappers;
function initialize() public initializer {
if (!isCapper(msg.sender)) {
_addCapper(msg.sender);
function initialize(address sender) public initializer {
if (!isCapper(sender)) {
_addCapper(sender);
}
}
......
......@@ -12,9 +12,9 @@ contract MinterRole is Initializable {
Roles.Role private minters;
function initialize() public initializer {
if (!isMinter(msg.sender)) {
_addMinter(msg.sender);
function initialize(address sender) public initializer {
if (!isMinter(sender)) {
_addMinter(sender);
}
}
......
......@@ -12,9 +12,9 @@ contract PauserRole is Initializable {
Roles.Role private pausers;
function initialize() public initializer {
if (!isPauser(msg.sender)) {
_addPauser(msg.sender);
function initialize(address sender) public initializer {
if (!isPauser(sender)) {
_addPauser(sender);
}
}
......
......@@ -12,9 +12,9 @@ contract SignerRole is Initializable {
Roles.Role private signers;
function initialize() public initializer {
if (!isSigner(msg.sender)) {
_addSigner(msg.sender);
function initialize(address sender) public initializer {
if (!isSigner(sender)) {
_addSigner(sender);
}
}
......
......@@ -31,7 +31,7 @@ contract RefundableCrowdsale is Initializable, FinalizableCrowdsale {
// conditional added to make initializer idempotent in case of diamond inheritance
if (address(_escrow) == address(0)) {
_escrow = new RefundEscrow();
_escrow.initialize(wallet());
_escrow.initialize(wallet(), address(this));
}
_goal = goal;
......
......@@ -16,8 +16,8 @@ contract IndividuallyCappedCrowdsale is Initializable, Crowdsale, CapperRole {
mapping(address => uint256) private _contributions;
mapping(address => uint256) private _caps;
function initialize() public initializer {
CapperRole.initialize();
function initialize(address sender) public initializer {
CapperRole.initialize(sender);
}
/**
......
......@@ -16,9 +16,9 @@ contract BreakInvariantBounty is Initializable, PullPayment, Ownable {
event TargetCreated(address createdAddress);
function initialize() public initializer {
function initialize(address sender) public initializer {
PullPayment.initialize();
Ownable.initialize();
Ownable.initialize(sender);
}
/**
......
......@@ -65,8 +65,8 @@ contract SignatureBouncer is Initializable, SignerRole {
_;
}
function initialize() public initializer {
SignerRole.initialize();
function initialize(address sender) public initializer {
SignerRole.initialize(sender);
}
/**
......
......@@ -48,12 +48,13 @@ contract TokenVesting is Initializable, Ownable {
uint256 start,
uint256 cliffDuration,
uint256 duration,
bool revocable
bool revocable,
address sender
)
public
initializer
{
Ownable.initialize();
Ownable.initialize(sender);
require(beneficiary != address(0));
require(cliffDuration <= duration);
......
......@@ -18,8 +18,8 @@ contract SampleCrowdsaleToken is Initializable, ERC20Mintable {
string public symbol;
uint8 public decimals;
function initialize() public initializer {
ERC20Mintable.initialize();
function initialize(address sender) public initializer {
ERC20Mintable.initialize(sender);
name = "Sample Crowdsale Token";
symbol = "SCT";
......
......@@ -20,10 +20,10 @@ contract SimpleToken is Initializable, ERC20 {
uint256 public constant INITIAL_SUPPLY = 10000 * (10 ** uint256(decimals));
/**
* @dev Constructor that gives msg.sender all of existing tokens.
* @dev Constructor that gives sender all of existing tokens.
*/
function initialize() public initializer {
_mint(msg.sender, INITIAL_SUPPLY);
function initialize(address sender) public initializer {
_mint(sender, INITIAL_SUPPLY);
}
}
......@@ -14,8 +14,8 @@ contract Pausable is Initializable, PauserRole {
bool private _paused = false;
function initialize() public initializer {
PauserRole.initialize();
function initialize(address sender) public initializer {
PauserRole.initialize(sender);
}
/**
......
......@@ -24,7 +24,7 @@ contract TargetMock is Target {
contract BreakInvariantBountyMock is BreakInvariantBounty {
constructor() public {
BreakInvariantBounty.initialize();
BreakInvariantBounty.initialize(msg.sender);
}
function _deployContract() internal returns (address) {
......
......@@ -5,7 +5,7 @@ import "../access/roles/CapperRole.sol";
contract CapperRoleMock is CapperRole {
constructor() public {
CapperRole.initialize();
CapperRole.initialize(msg.sender);
}
function removeCapper(address account) public {
......
......@@ -8,7 +8,7 @@ contract ConditionalEscrowMock is ConditionalEscrow {
mapping(address => bool) private _allowed;
constructor() public {
ConditionalEscrow.initialize();
ConditionalEscrow.initialize(msg.sender);
}
function setAllowed(address payee, bool allowed) public {
......
......@@ -7,7 +7,7 @@ import "./MinterRoleMock.sol";
contract ERC20CappedMock is ERC20Capped, MinterRoleMock {
constructor(uint256 cap) public {
ERC20Capped.initialize(cap);
ERC20Capped.initialize(cap, msg.sender);
}
}
......@@ -7,7 +7,6 @@ import "./MinterRoleMock.sol";
contract ERC20MintableMock is ERC20Mintable, MinterRoleMock {
constructor() public {
ERC20Mintable.initialize();
ERC20Mintable.initialize(msg.sender);
}
}
......@@ -8,7 +8,7 @@ import "./PauserRoleMock.sol";
contract ERC20PausableMock is ERC20Pausable, PauserRoleMock {
constructor(address initialAccount, uint initialBalance) public {
ERC20Pausable.initialize();
ERC20Pausable.initialize(msg.sender);
_mint(initialAccount, initialBalance);
}
......
......@@ -15,7 +15,8 @@ contract ERC721FullMock is ERC721Full, ERC721Mintable, ERC721MetadataMintable, E
constructor(string name, string symbol) public
{
ERC721Full.initialize(name, symbol);
ERC721Mintable.initialize();
ERC721Mintable.initialize(msg.sender);
ERC721MetadataMintable.initialize(msg.sender);
ERC721Burnable.initialize();
}
......
......@@ -16,8 +16,8 @@ contract ERC721MintableBurnableImpl
public
{
ERC721Full.initialize("Test", "TEST");
ERC721Mintable.initialize();
ERC721MetadataMintable.initialize();
ERC721Mintable.initialize(msg.sender);
ERC721MetadataMintable.initialize(msg.sender);
ERC721Burnable.initialize();
}
}
......@@ -10,7 +10,7 @@ import "./PauserRoleMock.sol";
*/
contract ERC721PausableMock is ERC721Pausable, PauserRoleMock {
constructor() {
ERC721Pausable.initialize();
ERC721Pausable.initialize(msg.sender);
}
function mint(address to, uint256 tokenId) public {
......
......@@ -4,6 +4,6 @@ import "../payment/Escrow.sol";
contract EscrowMock is Escrow {
constructor() public {
Escrow.initialize();
Escrow.initialize(msg.sender);
}
}
......@@ -16,6 +16,6 @@ contract IndividuallyCappedCrowdsaleImpl
public
{
Crowdsale.initialize(rate, wallet, token);
IndividuallyCappedCrowdsale.initialize();
IndividuallyCappedCrowdsale.initialize(msg.sender);
}
}
......@@ -5,7 +5,7 @@ import "../access/roles/MinterRole.sol";
contract MinterRoleMock is MinterRole {
constructor() public {
MinterRole.initialize();
MinterRole.initialize(msg.sender);
}
function removeMinter(address account) public {
......
......@@ -3,8 +3,7 @@ pragma solidity ^0.4.24;
import { Ownable } from "../ownership/Ownable.sol";
contract OwnableMock is Ownable {
constructor() {
Ownable.initialize();
Ownable.initialize(msg.sender);
}
}
......@@ -10,7 +10,7 @@ contract PausableMock is Pausable, PauserRoleMock {
uint256 public count;
constructor() public {
Pausable.initialize();
Pausable.initialize(msg.sender);
drasticMeasureTaken = false;
count = 0;
......
......@@ -5,7 +5,7 @@ import "../access/roles/PauserRole.sol";
contract PauserRoleMock is PauserRole {
constructor() public {
PauserRole.initialize();
PauserRole.initialize(msg.sender);
}
function removePauser(address account) public {
......
......@@ -4,6 +4,6 @@ import "../payment/RefundEscrow.sol";
contract RefundEscrowMock is RefundEscrow {
constructor(address beneficiary) public {
RefundEscrow.initialize(beneficiary);
RefundEscrow.initialize(beneficiary, msg.sender);
}
}
......@@ -5,7 +5,7 @@ import "../examples/SampleCrowdsale.sol";
contract SampleCrowdsaleTokenMock is SampleCrowdsaleToken {
constructor() public {
SampleCrowdsaleToken.initialize();
SampleCrowdsaleToken.initialize(msg.sender);
}
}
......
......@@ -5,7 +5,7 @@ import "../ownership/Secondary.sol";
contract SecondaryMock is Secondary {
constructor() public {
Secondary.initialize();
Secondary.initialize(msg.sender);
}
function onlyPrimaryMock() public view onlyPrimary {
......
......@@ -6,7 +6,7 @@ import "./SignerRoleMock.sol";
contract SignatureBouncerMock is SignatureBouncer, SignerRoleMock {
constructor() public {
SignatureBouncer.initialize();
SignatureBouncer.initialize(msg.sender);
}
function checkValidSignature(address account, bytes signature)
......
......@@ -5,7 +5,7 @@ import "../access/roles/SignerRole.sol";
contract SignerRoleMock is SignerRole {
constructor() public {
SignerRole.initialize();
SignerRole.initialize(msg.sender);
}
function removeSigner(address account) public {
......
......@@ -4,6 +4,6 @@ import "../examples/SimpleToken.sol";
contract SimpleTokenMock is SimpleToken {
constructor() public {
SimpleToken.initialize();
SimpleToken.initialize(msg.sender);
}
}
......@@ -15,7 +15,8 @@ contract TokenVestingMock is TokenVesting {
start,
cliffDuration,
duration,
revocable
revocable,
msg.sender
);
}
}
......@@ -22,8 +22,8 @@ contract Ownable is Initializable {
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
function initialize() public initializer {
_owner = msg.sender;
function initialize(address sender) public initializer {
_owner = sender;
}
/**
......
......@@ -12,8 +12,8 @@ contract Secondary is Initializable {
/**
* @dev Sets the primary account to the one that is creating the Secondary contract.
*/
function initialize() public initializer {
_primary = msg.sender;
function initialize(address sender) public initializer {
_primary = sender;
}
/**
......
......@@ -9,8 +9,8 @@ import "./Escrow.sol";
* @dev Base abstract escrow to only allow withdrawal if a condition is met.
*/
contract ConditionalEscrow is Initializable, Escrow {
function initialize() public initializer {
Escrow.initialize();
function initialize(address sender) public initializer {
Escrow.initialize(sender);
}
/**
......
......@@ -20,8 +20,8 @@ contract Escrow is Initializable, Secondary {
mapping(address => uint256) private _deposits;
function initialize() public initializer {
Secondary.initialize();
function initialize(address sender) public initializer {
Secondary.initialize(sender);
}
function depositsOf(address payee) public view returns (uint256) {
......
......@@ -16,7 +16,7 @@ contract PullPayment is Initializable {
// conditional added to make initializer idempotent in case of diamond inheritance
if (address(_escrow) == address(0)) {
_escrow = new Escrow();
_escrow.initialize();
_escrow.initialize(address(this));
}
}
......
......@@ -23,9 +23,8 @@ contract RefundEscrow is Initializable, ConditionalEscrow {
* @dev Constructor.
* @param beneficiary The beneficiary of the deposits.
*/
function initialize(address beneficiary) public initializer {
Secondary.initialize();
ConditionalEscrow.initialize();
function initialize(address beneficiary, address sender) public initializer {
ConditionalEscrow.initialize(sender);
require(beneficiary != address(0));
_beneficiary = beneficiary;
......
......@@ -12,11 +12,11 @@ contract ERC20Capped is Initializable, ERC20Mintable {
uint256 private _cap;
function initialize(uint256 cap)
function initialize(uint256 cap, address sender)
public
initializer
{
ERC20Mintable.initialize();
ERC20Mintable.initialize(sender);
require(cap > 0);
_cap = cap;
......
......@@ -10,8 +10,8 @@ import "../../access/roles/MinterRole.sol";
* @dev ERC20 minting logic
*/
contract ERC20Mintable is Initializable, ERC20, MinterRole {
function initialize() public initializer {
MinterRole.initialize();
function initialize(address sender) public initializer {
MinterRole.initialize(sender);
}
/**
......
......@@ -11,8 +11,8 @@ import "../../lifecycle/Pausable.sol";
**/
contract ERC20Pausable is Initializable, ERC20, Pausable {
function initialize() public initializer {
Pausable.initialize();
function initialize(address sender) public initializer {
Pausable.initialize(sender);
}
function transfer(
......
......@@ -10,9 +10,9 @@ import "../../access/roles/MinterRole.sol";
* @dev ERC721 minting logic with metadata
*/
contract ERC721MetadataMintable is Initializable, ERC721, ERC721Metadata, MinterRole {
function initialize() public initializer {
function initialize(address sender) public initializer {
ERC721.initialize();
MinterRole.initialize();
MinterRole.initialize(sender);
}
/**
......
......@@ -10,9 +10,9 @@ import "../../access/roles/MinterRole.sol";
* @dev ERC721 minting logic
*/
contract ERC721Mintable is Initializable, ERC721, MinterRole {
function initialize() public initializer {
function initialize(address sender) public initializer {
ERC721.initialize();
MinterRole.initialize();
MinterRole.initialize(sender);
}
/**
......
......@@ -10,9 +10,9 @@ import "../../lifecycle/Pausable.sol";
* @dev ERC721 modified with pausable transfers.
**/
contract ERC721Pausable is Initializable, ERC721, Pausable {
function initialize() public initializer {
function initialize(address sender) public initializer {
ERC721.initialize();
Pausable.initialize();
Pausable.initialize(sender);
}
function approve(
......
......@@ -5,13 +5,13 @@ const { shouldBehaveLikeOwnable } = require('./Ownable.behavior');
const Ownable = artifacts.require('OwnableMock');
contract('Ownable', function ([_, owner, ...otherAccounts]) {
contract('Ownable', function ([_, owner, anyone, ...otherAccounts]) {
beforeEach(async function () {
this.ownable = await Ownable.new({ from: owner });
});
it('cannot be reinitialized', async function () {
await expectThrow(this.ownable.initialize(), EVMRevert);
await expectThrow(this.ownable.initialize(anyone), EVMRevert);
});
shouldBehaveLikeOwnable(owner, otherAccounts);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment