diff options
author | dec05eba <dec05eba@protonmail.com> | 2018-05-14 03:07:43 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2020-08-18 23:25:46 +0200 |
commit | 4241bcd4e14095e4340a0300e205f6fdc503f1d8 (patch) | |
tree | 609041efdeac4cd8836c3b0a8569ffdf956c4d5d /include/odhtdb/DatabaseStorage.hpp | |
parent | b995e79eaf3ac940547beb902c1e1da5c08308ec (diff) |
Remove user/group classes, user public key/group id directly to database instead
Diffstat (limited to 'include/odhtdb/DatabaseStorage.hpp')
-rw-r--r-- | include/odhtdb/DatabaseStorage.hpp | 61 |
1 files changed, 6 insertions, 55 deletions
diff --git a/include/odhtdb/DatabaseStorage.hpp b/include/odhtdb/DatabaseStorage.hpp index 3c4d9bc..0d94c91 100644 --- a/include/odhtdb/DatabaseStorage.hpp +++ b/include/odhtdb/DatabaseStorage.hpp @@ -6,8 +6,7 @@ #include "Signature.hpp" #include "Encryption.hpp" #include "Group.hpp" -#include "LocalUser.hpp" -#include "LocalUserEncrypted.hpp" +#include "Permission.hpp" #include "OwnedMemory.hpp" #include "DatabaseOperation.hpp" #include <vector> @@ -24,48 +23,6 @@ namespace odhtdb { class Database; - struct DatabaseStorageObjectDecrypted - { - DatabaseOperation operation; - OwnedMemory data; - }; - - struct DatabaseStorageObject - { - Hash requestHash; - DataView data; - u64 createdTimestamp; // In microseconds - Signature::PublicKey creatorPublicKey; - DatabaseStorageObjectDecrypted decryptedObject; - - DatabaseStorageObject(const Hash &_requestHash, DataView &_data, u64 _timestamp, const Signature::PublicKey &_creatorPublicKey); - }; - - struct DatabaseStorageObjectList - { - Signature::PublicKey creatorPublicKey; - DataView data; - u64 createdTimestamp; // In microseconds - std::vector<Group*> groups; - std::vector<DatabaseStorageObject*> objects; - - DatabaseStorageObjectList(const Signature::PublicKey &_creatorPublicKey) : - creatorPublicKey(_creatorPublicKey) - { - - } - }; - - struct DatabaseStorageQuarantineObject - { - DataView data; - u64 createdTimestamp; // In microseconds - u64 storedTimestamp; // In microseconds - Signature::PublicKey creatorPublicKey; - - DatabaseStorageQuarantineObject(DataView &_data, u64 _timestamp, const Signature::PublicKey &_creatorPublicKey); - }; - class DatabaseStorageException : public std::runtime_error { public: @@ -103,18 +60,9 @@ namespace odhtdb DatabaseStorageWrongPassword(const std::string &errMsg) : DatabaseStorageException(errMsg) {} }; - using DatabaseStorageMap = MapHash<DatabaseStorageObjectList*>; - using DatabaseStorageQuarantineMap = Signature::MapPublicKey<std::vector<DatabaseStorageQuarantineObject*>>; - const int PASSWORD_SALT_LEN = 16; const int HASHED_PASSWORD_LEN = 32; - struct NodeLocalUser - { - Hash nodeHash; - LocalUser *localUser; - }; - using FetchNodeRawCallbackFunc = std::function<void(const DataView)>; using FetchNodeAddDataRawCallbackFunc = std::function<void(const DataView)>; @@ -131,14 +79,14 @@ namespace odhtdb bool doesDataExist(const Hash &requestHash) const; // Throws DatabaseStorageAlreadyExists if data with hash already exists - void createStorage(const Hash &hash, Group *creatorGroup, u64 timestamp, const void *data, usize size); + void createStorage(const Hash &hash, const Signature::PublicKey &adminPublicKey, const DataView &adminGroupId, u64 timestamp, const void *data, usize size); // Throws DatabaseStorageNotFound if data with @nodeHash hash has not been created yet. // Throws DatabaseStorageAlreadyExists if same data has been added before (hash of @data, in @dataHash) void appendStorage(const Hash &nodeHash, const Hash &dataHash, DatabaseOperation operation, const Signature::PublicKey &creatorPublicKey, u64 timestamp, const void *data, usize size, const DataView &additionalDataView); // Throws DatabaseStorageAlreadyExists if group already exists in node - void addGroup(const Hash &nodeHash, Group *group); + void addGroup(const Hash &nodeHash, const DataView &groupId, const Permission &permissions); void addUserToGroup(const Hash &nodeHash, const Signature::PublicKey &userPublicKey, const DataView &groupId); @@ -148,6 +96,9 @@ namespace odhtdb void fetchNodeRaw(const Hash &nodeHash, FetchNodeRawCallbackFunc callbackFunc); void fetchNodeAddDataRaw(const Hash &nodeHash, FetchNodeAddDataRawCallbackFunc callbackFunc); + bool isUserAllowedToAddDataInNode(const Hash &nodeHash, const Signature::PublicKey &userPublicKey) const; + bool isUserAllowedToAddUserToGroupInNode(const Hash &nodeHash, const Signature::PublicKey &userPublicKey, const DataView &groupToAddUserTo) const; + // Username and key pair has to be unique, returns true on success //bool storeLocalUser(const std::string &username, const Signature::KeyPair &keyPair, const std::string &password); |