|
@ -18,11 +18,15 @@ contract Forum { |
|
|
event UserSignedUp(string username, address userAddress); |
|
|
event UserSignedUp(string username, address userAddress); |
|
|
event UsernameUpdated(string newName, string oldName,address userAddress); |
|
|
event UsernameUpdated(string newName, string oldName,address userAddress); |
|
|
|
|
|
|
|
|
function signUp(string memory username, string memory orbitDBId, string memory orbitTopicsDB, string memory orbitPostsDB, string memory orbitPublicKey, string memory orbitPrivateKey) public returns (bool) { |
|
|
function signUp(string memory username, string memory orbitIdentityId, |
|
|
|
|
|
string memory orbitIdentityPublicKey, string memory orbitIdentityPrivateKey, |
|
|
|
|
|
string memory orbitId, string memory orbitPublicKey, string memory orbitPrivateKey, |
|
|
|
|
|
string memory orbitTopicsDB, string memory orbitPostsDB) public returns (bool) { |
|
|
require (!hasUserSignedUp(msg.sender), "User has already signed up."); |
|
|
require (!hasUserSignedUp(msg.sender), "User has already signed up."); |
|
|
require(!isUserNameTaken(username), "Username is already taken."); |
|
|
require(!isUserNameTaken(username), "Username is already taken."); |
|
|
users[msg.sender] = User(username, |
|
|
users[msg.sender] = User(username, |
|
|
OrbitDB(orbitDBId,orbitTopicsDB, orbitPostsDB, orbitPublicKey, orbitPrivateKey), |
|
|
OrbitDB(orbitIdentityId, orbitIdentityPublicKey, orbitIdentityPrivateKey, |
|
|
|
|
|
orbitId, orbitPublicKey, orbitPrivateKey, orbitTopicsDB, orbitPostsDB), |
|
|
new uint[](0), new uint[](0), block.timestamp, true); |
|
|
new uint[](0), new uint[](0), block.timestamp, true); |
|
|
userAddresses[username] = msg.sender; |
|
|
userAddresses[username] = msg.sender; |
|
|
emit UserSignedUp(username, msg.sender); |
|
|
emit UserSignedUp(username, msg.sender); |
|
@ -75,52 +79,81 @@ contract Forum { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//----------------------------------------OrbitDB---------------------------------------- |
|
|
//----------------------------------------OrbitDB---------------------------------------- |
|
|
|
|
|
// TODO: set upper bounds to strings (instead of being of arbitrary length) |
|
|
|
|
|
// TODO: not sure if topicsDB//postsDB are actually needed |
|
|
struct OrbitDB { |
|
|
struct OrbitDB { |
|
|
string id; // TODO: set an upper bound instead of arbitrary string |
|
|
string identityId; |
|
|
string topicsDB; //TODO: not sure yet which of these are actually needed |
|
|
string identityPublicKey; |
|
|
|
|
|
string identityPrivateKey; |
|
|
|
|
|
string orbitId; |
|
|
|
|
|
string orbitPublicKey; |
|
|
|
|
|
string orbitPrivateKey; |
|
|
|
|
|
string topicsDB; |
|
|
string postsDB; |
|
|
string postsDB; |
|
|
string publicKey; |
|
|
|
|
|
string privateKey; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function getOrbitIdentityId(address userAddress) public view returns (string memory) { |
|
|
|
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
|
|
|
return users[userAddress].orbitdb.identityId; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
function getOrbitDBId(address userAddress) public view returns (string memory) { |
|
|
function getOrbitIdentityPublicKey(address userAddress) public view returns (string memory) { |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
return users[userAddress].orbitdb.id; |
|
|
return users[userAddress].orbitdb.identityPublicKey; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function getOrbitTopicsDB(address userAddress) public view returns (string memory) { |
|
|
function getOrbitIdentityPrivateKey(address userAddress) public view returns (string memory) { |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
return users[userAddress].orbitdb.topicsDB; |
|
|
return users[userAddress].orbitdb.identityPrivateKey; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function getOrbitPostsDB(address userAddress) public view returns (string memory) { |
|
|
|
|
|
|
|
|
function getOrbitDBId(address userAddress) public view returns (string memory) { |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
return users[userAddress].orbitdb.postsDB; |
|
|
return users[userAddress].orbitdb.orbitId; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function getOrbitPublicKey(address userAddress) public view returns (string memory) { |
|
|
function getOrbitPublicKey(address userAddress) public view returns (string memory) { |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
return users[userAddress].orbitdb.publicKey; |
|
|
return users[userAddress].orbitdb.orbitPublicKey; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//TODO: encrypt using Metamask in the future |
|
|
//TODO: encrypt using Metamask in the future |
|
|
function getOrbitPrivateKey(address userAddress) public view returns (string memory) { |
|
|
function getOrbitPrivateKey(address userAddress) public view returns (string memory) { |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
return users[userAddress].orbitdb.privateKey; |
|
|
return users[userAddress].orbitdb.orbitPrivateKey; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function getOrbitDBInfo(address userAddress) public view returns (string memory, string memory, string memory, string memory, string memory) { |
|
|
function getOrbitTopicsDB(address userAddress) public view returns (string memory) { |
|
|
|
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
|
|
|
return users[userAddress].orbitdb.topicsDB; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function getOrbitPostsDB(address userAddress) public view returns (string memory) { |
|
|
|
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
|
|
|
return users[userAddress].orbitdb.postsDB; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function getOrbitIdentityInfo(address userAddress) public view returns (string memory, string memory, string memory) { |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
return ( |
|
|
return ( |
|
|
users[userAddress].orbitdb.id, |
|
|
users[userAddress].orbitdb.identityId, |
|
|
users[userAddress].orbitdb.topicsDB, |
|
|
users[userAddress].orbitdb.identityPublicKey, |
|
|
users[userAddress].orbitdb.postsDB, |
|
|
users[userAddress].orbitdb.identityPrivateKey |
|
|
users[userAddress].orbitdb.publicKey, |
|
|
|
|
|
users[userAddress].orbitdb.privateKey |
|
|
|
|
|
); |
|
|
); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function getOrbitDBInfo(address userAddress) public view returns (string memory, string memory, |
|
|
|
|
|
string memory, string memory, string memory) { |
|
|
|
|
|
require (hasUserSignedUp(userAddress), "User hasn't signed up."); |
|
|
|
|
|
return ( |
|
|
|
|
|
users[userAddress].orbitdb.orbitId, |
|
|
|
|
|
users[userAddress].orbitdb.orbitPublicKey, |
|
|
|
|
|
users[userAddress].orbitdb.orbitPrivateKey, |
|
|
|
|
|
users[userAddress].orbitdb.topicsDB, |
|
|
|
|
|
users[userAddress].orbitdb.postsDB |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//----------------------------------------POSTING---------------------------------------- |
|
|
//----------------------------------------POSTING---------------------------------------- |
|
|
struct Topic { |
|
|
struct Topic { |
|
|