aboutsummaryrefslogtreecommitdiff
path: root/include/odhtdb/DatabaseStorage.hpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2018-05-14 03:07:43 +0200
committerdec05eba <dec05eba@protonmail.com>2020-08-18 23:25:46 +0200
commit4241bcd4e14095e4340a0300e205f6fdc503f1d8 (patch)
tree609041efdeac4cd8836c3b0a8569ffdf956c4d5d /include/odhtdb/DatabaseStorage.hpp
parentb995e79eaf3ac940547beb902c1e1da5c08308ec (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.hpp61
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);