Challenge #6tx.origin Misuse

Difficulty: High
#Security#AccessControl
This contract uses tx.origin for access control, which is insecure.
Illustration for tx.origin Misuse

pragma solidity ^0.8.0;
contract Name Registry {
struct User {
string name;
}
mapping (address => User) public users;
function setName(string memory _name) public { users [msg.sender] = User(_name);
}
function getName (address _user) public view returns (string memory) {
return users [_user].name;
}
}
    
💡 Hint: tx.origin can be manipulated. Prefer msg.sender.