EAddPrivatePathSharing,
ERemovePrivatePathSharing,
EGetAllSharedPaths,
+ EGetSharingForOwner,
+ EGetSharingForTarget,
EClearSharing,
EClearPrivatePaths,
EGetPrivilegeGroups,
{ StmtType::EAddPrivatePathSharing, "INSERT INTO app_private_sharing_view(owner_app_name, target_app_name, path, path_label) VALUES(?, ?, ?, ?)"},
{ StmtType::ERemovePrivatePathSharing, "DELETE FROM app_private_sharing_view WHERE owner_app_name = ? AND target_app_name = ? AND path = ?"},
{ StmtType::EGetAllSharedPaths, "SELECT owner_app_name, path FROM app_private_sharing_view ORDER BY owner_app_name"},
+ { StmtType::EGetSharingForOwner, "SELECT target_app_name, path FROM app_private_sharing_view WHERE owner_app_name = ?"},
+ { StmtType::EGetSharingForTarget, "SELECT owner_app_name, path FROM app_private_sharing_view WHERE target_app_name = ?"},
{ StmtType::EClearSharing, "DELETE FROM app_private_sharing;"},
{ StmtType::EClearPrivatePaths, "DELETE FROM shared_path;"},
{ StmtType::EGetPrivilegeGroups, " SELECT group_name FROM privilege_group_view WHERE privilege_name = ?" },
void GetAllPrivateSharing(std::map<std::string, std::vector<std::string>> &appPathMap);
/**
+ * Get all paths shared with target applications by specified owner application
+ *
+ * @param ownerAppName - owner of queried sharings
+ * @param ownerSharing - map containing vectors of paths shared by specified application
+ * mapped by target application names
+ * @exception DB::SqlConnection::Exception::InternalError on internal error
+ */
+ void GetPrivateSharingForOwner(const std::string &ownerAppName,
+ std::map<std::string, std::vector<std::string>> &ownerSharing);
+ /**
+ * Get all paths shared with specified target application name
+ *
+ * @param targetAppName - target of queried sharings
+ * @param targetSharing - map containing vectors of paths shared with specified application
+ * mapped by owner application names
+ * @exception DB::SqlConnection::Exception::InternalError on internal error
+ */
+ void GetPrivateSharingForTarget(const std::string &targetAppName,
+ std::map<std::string, std::vector<std::string>> &targetSharing);
+ /**
* Clear information about private sharing.
*
* @exception DB::SqlConnection::Exception::InternalError on internal error
});
}
+void PrivilegeDb::GetPrivateSharingForOwner(const std::string &ownerAppName,
+ std::map<std::string, std::vector<std::string>> &ownerSharing)
+{
+ try_catch<void>([&] {
+ auto command = getStatement(StmtType::EGetSharingForOwner);
+ command->BindString(1, ownerAppName);
+ while (command->Step()) {
+ std::string targetAppName = command->GetColumnString(0);
+ std::string path = command->GetColumnString(1);
+ LogDebug("Got appName : " << targetAppName << " and path label : " << path);
+ ownerSharing[targetAppName].push_back(path);
+ }
+ });
+}
+
+void PrivilegeDb::GetPrivateSharingForTarget(const std::string &targetAppName,
+ std::map<std::string, std::vector<std::string>> &targetSharing)
+{
+ try_catch<void>([&] {
+ auto command = getStatement(StmtType::EGetSharingForTarget);
+ command->BindString(1, targetAppName);
+ while (command->Step()) {
+ std::string ownerAppName = command->GetColumnString(0);
+ std::string path = command->GetColumnString(1);
+ LogDebug("Got appName : " << ownerAppName << " and path label : " << path);
+ targetSharing[ownerAppName].push_back(path);
+ }
+ });
+}
+
void PrivilegeDb::ClearPrivateSharing() {
try_catch<void>([&] {
{