Untitled
unknown
plain_text
3 years ago
2.2 kB
17
Indexable
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; contract manageAuth{ /* ابنجا با مپینگ آدرس هایی که میتونن بخونن رو مشخص کردیم .بصورت دیفالت فالس هست . اما میتونیم یه فانکشن بنویسیم که فقط ادمین اجازه بده آدرس افراد داخل این مپینگ تروو بشن */ mapping(address => bool) public canRead; /* اینجا هم مادیفایر نوشتیم که قبل از اجرا شدن فانکشن شرط ما اجرا بشه. اگر شرط ما اکی بود، وارد فانکشن میشیم */ modifier onlyCanRead{ require(canRead[msg.sender]== true, "you cann ot read"); _; } } //ارث برای از کنتراکت بالایی و قابل استفاده شدن تمام استیت ها و فانکشن هایی که پرایویت نیستن ! contract Foo is manageAuth { address public owner; constructor (){ owner = msg.sender; } //دیتا استراکچر فرد struct person{ string name; } //مپ برای ذخیره افراد از روی آدرس mapping (address => person) public people; //ساخت شخص function createP(string memory _name) public { //ساخت فرد بدون استفاده از مموری یا استوریج - بصورت دیفالت استراکت استوریج هست اما داخل فانکشن میشه مموری هم گذاشت people[msg.sender].name = _name; } //خواندن افراد با استفاده از آدرس - فقط افرادی که در کنتراکت اولیه اجازه دارن function readP() public view onlyCanRead returns(string memory){ return people[msg.sender].name; } //ادمین فقط میتونه این فانکشن صدا بزنه و آدرس افراد رو داخل فانکشن کنتراکت اولی ترووو کنه تا بتونن بخونن function setAdd(address _address) public{ require(msg.sender == owner); canRead[_address] = true; } }
Editor is loading...