// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/access/Ownable.sol"; contract User is Ownable { constructor() { } struct UserData { string userName; address publicAddress; string ipfsURI; } mapping (string => UserData) _idToUser; event UserCreated(uint256 timestamp, string username, address userAddress, string ipfsURI); function registerUser(string memory userName, address publicAddress, string memory ipfsURI) external onlyOwner returns (bool) { require(keccak256(bytes(_idToUser[userName].userName)) != keccak256(bytes(userName)), "This user is already registered."); _idToUser[userName] = UserData({ userName: userName, publicAddress: publicAddress, ipfsURI: ipfsURI }); emit UserCreated(block.timestamp, userName, publicAddress, ipfsURI); return true; } function getUser(string memory userName) public view returns (UserData memory) { return _idToUser[userName]; } function resolveAddress(string memory userName) public view returns (address) { return _idToUser[userName].publicAddress; } }
0.4.18