Created
January 12, 2024 15:10
-
-
Save rafat/a504735205714e32528b2e4abf4f98bb to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.19+commit.7dd6d404.js&optimize=false&runs=200&gist=
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
// SPDX-License-Identifier: MIT | |
pragma solidity 0.8.21; | |
contract RegisterAccess { | |
string[] private info; | |
address public owner; | |
mapping (address => bool) public allowlist; | |
constructor() { | |
owner = msg.sender; | |
allowlist[msg.sender] = true; | |
} | |
event InfoChange(string oldInfo, string newInfo); | |
modifier onlyOwner { | |
require(msg.sender == owner,"Only owner"); | |
_; | |
} | |
modifier onlyAllowlist { | |
require(allowlist[msg.sender] == true, "Only allowlist"); | |
_; | |
} | |
function getInfo(uint index) public view returns (string memory) { | |
return info[index]; | |
} | |
function setInfo(uint index, string memory _info) public onlyAllowlist { | |
emit InfoChange (info[index], _info); | |
info[index] = _info; | |
} | |
function addInfo(string memory _info) public onlyAllowlist returns (uint index) { | |
info.push (_info); | |
index = info.length -1; | |
} | |
function listInfo() public view returns (string[] memory) { | |
return info; | |
} | |
function addMember (address _member) public onlyOwner { | |
allowlist[_member] = true; | |
} | |
function delMember (address _member) public onlyOwner { | |
allowlist[_member] = false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment