From 8f009746afac3024f3371434c28eb3720186dbbd Mon Sep 17 00:00:00 2001 From: x256 <153709773+xTwo56@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:34:41 +0530 Subject: [PATCH 1/2] feat: create a function to delete and restrict user --- contract/Database.sol | 57 +++++++++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 16 deletions(-) diff --git a/contract/Database.sol b/contract/Database.sol index fde0d6b..ffa88f8 100644 --- a/contract/Database.sol +++ b/contract/Database.sol @@ -2,7 +2,6 @@ pragma solidity >=0.7.0<0.9.0; contract Database{ - struct Details { string aadharId; string name; @@ -12,11 +11,13 @@ contract Database{ string batchNo; } - mapping( address => Details) public list; - mapping( string => bool) public added; + mapping( string => Details) private aadharToUser; - - uint256 public count=0; + mapping( address => Details) private list; + uint256 private count=0; + mapping( string => bool ) public added; + mapping( address => bool ) public restrictedUser; + mapping( string => address ) public aadharToAddress; address public admin; bool alreadyset=false; @@ -25,15 +26,15 @@ contract Database{ } - modifier Added (string memory aadhar) - { - require(!added[aadhar],"Details already added"); - _; - } modifier personPresent{ require(keccak256(abi.encodePacked(list[msg.sender].aadharId)) != keccak256(abi.encodePacked("")), "User doesn't exist"); _; + } + modifier Added (string memory aadhar) + { + require(!added[aadhar],"Details already added"); + _; } modifier onlyOnce() @@ -48,6 +49,11 @@ contract Database{ _; } + modifier isNotRestricted(){ + require(!restrictedUser[msg.sender], "User is restricted"); + _; + } + function set_Admin( address _admin) public onlyOnce() { admin=_admin; @@ -59,15 +65,17 @@ contract Database{ admin=newadmin; } - function getAdress()external view returns(address){ + function getAddress()external view returns(address){ return msg.sender; } - - function addPerson(string memory aadharId,string memory name, string memory DOB, string memory phoneNo, string memory rollNo, string memory batchNo) public + + function addPerson(string memory aadharId,string memory name, string memory DOB, string memory phoneNo, string memory rollNo, string memory batchNo) public Added (aadharId) isNotRestricted { + require(bytes(list[msg.sender].aadharId).length == 0, "User already exists"); Details memory person = Details({aadharId: aadharId,name: name,DOB: DOB,phoneNo: phoneNo, rollNo: rollNo, batchNo: batchNo}); list[msg.sender]=person; added[aadharId] = true; + aadharToAddress[aadharId] = msg.sender; aadharToUser[aadharId] = person; count++; } @@ -80,19 +88,36 @@ contract Database{ person.phoneNo = phoneNo; person.rollNo = rollNo; person.batchNo = batchNo; + added[aadharId]=true; + } - function checkDetails()public personPresent view returns(string[6] memory){ + function checkDetails()public personPresent view personPresent returns(string[6] memory){ Details memory person = list[msg.sender]; string[6] memory details = [person.aadharId, person.name, person.DOB, person.phoneNo, person.rollNo, person.batchNo]; return details; } function findByAadhaarId(string memory _aadharId)public view onlyAdmin returns(string[6] memory){ - require((bytes(aadharToUser[_aadharId].aadharId).length > 0), "Not found"); + require((bytes(aadharToUser[_aadharId].aadharId).length > 0), "User not found"); Details memory person = aadharToUser[_aadharId]; string[6] memory details = [person.aadharId, person.name, person.DOB, person.phoneNo, person.rollNo, person.batchNo]; return details; } -} + function deleteUser(string memory _aadharId)public onlyAdmin { + require((bytes(aadharToUser[_aadharId].aadharId).length > 0), "User not found"); + Details memory person = aadharToUser[_aadharId]; + person.aadharId = ""; + list[aadharToAddress[_aadharId]] = person; + aadharToUser[_aadharId] = person; + + added[_aadharId] = false; + count--; + restrictedUser[aadharToAddress[_aadharId]] = true; + } + function restrictUser(string memory _aadharId)public onlyAdmin { + restrictedUser[aadharToAddress[_aadharId]] = true; + } + +} From c4feee6c92c8d60844a2efd8f81bf50ae9ce0e85 Mon Sep 17 00:00:00 2001 From: xTwo56 <153709773+xTwo56@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:43:19 +0530 Subject: [PATCH 2/2] fix: updatedetails --- contract/Database.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contract/Database.sol b/contract/Database.sol index ffa88f8..3e67cc1 100644 --- a/contract/Database.sol +++ b/contract/Database.sol @@ -80,7 +80,7 @@ contract Database{ count++; } - function updateDetails(string memory aadharId,string memory name, string memory DOB, string memory phoneNo, string memory rollNo, string memory batchNo)public personPresent{ + function updateDetails(string memory aadharId,string memory name, string memory DOB, string memory phoneNo, string memory rollNo, string memory batchNo)public personPresent isNotRestricted { Details storage person = list[msg.sender]; person.aadharId = aadharId; person.name = name;