-
Notifications
You must be signed in to change notification settings - Fork 55
/
RegisterAccess.sol
51 lines (40 loc) · 1.15 KB
/
RegisterAccess.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
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;
}
}