Skip to content

Commit

Permalink
Merge pull request #727 from privacy-scaling-explorations/feat/zupass…
Browse files Browse the repository at this point in the history
…-registry

added Zupass User Registry
  • Loading branch information
yuetloo authored Mar 2, 2024
2 parents 419095a + 69a6919 commit 4f10f43
Showing 1 changed file with 77 additions and 0 deletions.
77 changes: 77 additions & 0 deletions contracts/contracts/userRegistry/ZupassUserRegistry.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.6.12;

import '@openzeppelin/contracts/access/Ownable.sol';

import './IUserRegistry.sol';

/**
* @dev A simple user registry managed by a trusted entity.
*/
contract ZupassUserRegistry is Ownable, IUserRegistry {

mapping(address => bool) private users;
mapping(uint256 => bool) private semaphoreIds;
mapping(address => uint256) private userTosemaphoreId;

// Events
event UserAdded(address indexed _user, uint256 _semaphoreId);
event UserRemoved(address indexed _user);

/**
* @dev Add verified unique user to the registry.
*/
function addUser(address _user, uint256 _semaphoreId)
external
onlyOwner
{
require(_user != address(0), 'UserRegistry: User address is zero');
require(_semaphoreId != 0, 'UserRegistry: Semaphore Id is zero');
require(!users[_user], 'UserRegistry: User already verified');
require(!semaphoreIds[_semaphoreId], 'UserRegistry: Semaphore Id already registered' );
users[_user] = true;
semaphoreIds[_semaphoreId] = true;
userTosemaphoreId[_user] = _semaphoreId;
emit UserAdded(_user, _semaphoreId);
}

/**
* @dev Remove user from the registry.
*/
function removeUser(address _user)
external
onlyOwner
{
require(users[_user], 'UserRegistry: User is not in the registry');
uint256 _semaphoreId = userTosemaphoreId[_user];
delete users[_user];
delete semaphoreIds[_semaphoreId];
delete userTosemaphoreId[_user];
emit UserRemoved(_user);
}

/**
* @dev Check if the user is verified.
*/
function isVerifiedUser(address _user)
override
external
view
returns (bool)
{
return users[_user];
}

/**
* @dev Check if the semaphore Id is verified.
*/
function isVerifiedSemaphoreId(uint256 _semaphoreId)
external
view
returns (bool)
{
return semaphoreIds[_semaphoreId];
}

}

0 comments on commit 4f10f43

Please sign in to comment.