Created
June 13, 2018 17:36
-
-
Save bijeebuss/38b728d4c2c4928965eb4990c678b69a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
contract AccountRegistry is Ownable { | |
mapping(address => bool) public accounts; | |
mapping(address => bool) public invites; | |
address public registryAdmin; | |
event AccountCreated(address indexed newUser); | |
event Invite(address indexed newUser); | |
function AccountRegistry() public { | |
accounts[owner] = true; | |
registryAdmin = owner; | |
} | |
function setRegistryAdmin(address _newRegistryAdmin) public onlyOwner nonZero(_newRegistryAdmin) { | |
registryAdmin = _newRegistryAdmin; | |
} | |
function createAccount(address _newUser) public onlyRegistryAdmin { | |
require(!accounts[_newUser]); | |
createAccountFor(_newUser); | |
} | |
function createAccountFor(address _newUser) private { | |
accounts[_newUser] = true; | |
emit AccountCreated(_newUser); | |
} | |
function inviteUser(address _newUser) public nonZero(_newUser) { | |
requie(accounts[msg.sender]); | |
require(!accounts[_newUser]); | |
requie(!invites[_newUser]); | |
invites[_newUser] = true; | |
emit Invite(_newUser); | |
} | |
function acceptInvite() public { | |
require(invites[msg.sender]); | |
require(!accounts[msg.sender]); | |
createAccountFor(msg.sender); | |
} | |
modifier nonZero(address _address) { | |
require(_address != 0); | |
_; | |
} | |
modifier onlyRegistryAdmin { | |
require(msg.sender == registryAdmin); | |
_; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment