Compare commits

...

7 Commits

Author SHA1 Message Date
Boris Tasevski
9c34129075 minor change 2022-08-04 11:37:41 +02:00
Boris Tasevski
983ff2f504 fix minor error 2022-08-04 11:32:01 +02:00
niko4299
ac541fa182 Addded Node Filtering 2022-07-22 17:58:17 +02:00
niko4299
a2643cc133 [E129<-T0955-MG] Expand ExecutionContext with label related information (#467)
* added

* Added FineGrainedAccessChecker to Context

* fixed
2022-07-21 20:23:55 +02:00
niko4299
f85ee31b4b [E129 < T0953-MG] GRANT, DENY, REVOKE added in interpreter and mainVisitor (#464)
* GRANT, DENY, REVOKE added in interpreter and mainVisitor

* Commented labelPermissons

* remove labelsPermission adding

* Fixed

* Removed extra lambda

* fixed
2022-07-21 15:09:28 +02:00
Boris Taševski
5914b97f5e T0954 mg expand user and role to hold permissions on labels (#465)
* added FineGrainedAccessPermissions class to model

* expanded user and role with fine grained access permissions

* fixed grammar
2022-07-21 14:00:56 +02:00
Boris Taševski
92b4e39b21 grammar expanded; (#462) 2022-07-21 12:29:17 +02:00

View File

@@ -29,6 +29,7 @@
#include "query/context.hpp"
#include "query/db_accessor.hpp"
#include "query/exceptions.hpp"
#include "query/fine_grained_access_checker.hpp"
#include "query/frontend/ast/ast.hpp"
#include "query/frontend/semantic/symbol_table.hpp"
#include "query/interpret/eval.hpp"
@@ -405,11 +406,29 @@ class ScanAllCursor : public Cursor {
vertices_it_.emplace(vertices_.value().begin());
}
#ifdef MG_ENTERPRISE
FilterNodes(context.fine_grained_access_checker, context.db_accessor);
if (vertices_it_.value() == vertices_.value().end()) return false;
#endif
frame[output_symbol_] = *vertices_it_.value();
++vertices_it_.value();
return true;
}
void FilterNodes(const FineGrainedAccessChecker *fine_grained_access_checker, DbAccessor *db_accessor) {
if (!fine_grained_access_checker) return;
while (vertices_it_.value() != vertices_.value().end()) {
VertexAccessor vertex = *vertices_it_.value();
auto vertex_labels = vertex.Labels(memgraph::storage::View::NEW).GetValue();
if (fine_grained_access_checker->IsUserAuthorizedLabels(vertex_labels, db_accessor)) {
break;
}
++vertices_it_.value();
}
}
void Shutdown() override { input_cursor_->Shutdown(); }
void Reset() override {