|
|
@@ -4072,6 +4072,21 @@ void HttpServer::HandleCreateView(const httplib::Request& req, httplib::Response
|
|
|
request.settings.icon = settings_json.value("icon", "");
|
|
|
request.settings.filters = settings_json.value("filters", nlohmann::json::object());
|
|
|
request.settings.sort = settings_json.value("sort", nlohmann::json::object());
|
|
|
+ // Parse access control arrays
|
|
|
+ if (settings_json.contains("visible_to_groups") && settings_json["visible_to_groups"].is_array()) {
|
|
|
+ for (const auto& group : settings_json["visible_to_groups"]) {
|
|
|
+ if (group.is_string()) {
|
|
|
+ request.settings.visible_to_groups.push_back(group.get<std::string>());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (settings_json.contains("editable_by_groups") && settings_json["editable_by_groups"].is_array()) {
|
|
|
+ for (const auto& group : settings_json["editable_by_groups"]) {
|
|
|
+ if (group.is_string()) {
|
|
|
+ request.settings.editable_by_groups.push_back(group.get<std::string>());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
auto result = viewService_->CreateView(request);
|
|
|
@@ -4134,7 +4149,9 @@ void HttpServer::HandleCreateView(const httplib::Request& req, httplib::Response
|
|
|
{"show_in_sidebar", result.view->settings.show_in_sidebar},
|
|
|
{"icon", result.view->settings.icon},
|
|
|
{"filters", result.view->settings.filters},
|
|
|
- {"sort", result.view->settings.sort}
|
|
|
+ {"sort", result.view->settings.sort},
|
|
|
+ {"visible_to_groups", result.view->settings.visible_to_groups},
|
|
|
+ {"editable_by_groups", result.view->settings.editable_by_groups}
|
|
|
};
|
|
|
|
|
|
res.status = 201;
|
|
|
@@ -4224,7 +4241,9 @@ void HttpServer::HandleListViews(const httplib::Request& req, httplib::Response&
|
|
|
view_json["settings"] = {
|
|
|
{"is_default", view.settings.is_default},
|
|
|
{"show_in_sidebar", view.settings.show_in_sidebar},
|
|
|
- {"icon", view.settings.icon}
|
|
|
+ {"icon", view.settings.icon},
|
|
|
+ {"visible_to_groups", view.settings.visible_to_groups},
|
|
|
+ {"editable_by_groups", view.settings.editable_by_groups}
|
|
|
};
|
|
|
|
|
|
views_json.push_back(view_json);
|
|
|
@@ -4340,7 +4359,9 @@ void HttpServer::HandleGetView(const httplib::Request& req, httplib::Response& r
|
|
|
{"show_in_sidebar", result.view->settings.show_in_sidebar},
|
|
|
{"icon", result.view->settings.icon},
|
|
|
{"filters", result.view->settings.filters},
|
|
|
- {"sort", result.view->settings.sort}
|
|
|
+ {"sort", result.view->settings.sort},
|
|
|
+ {"visible_to_groups", result.view->settings.visible_to_groups},
|
|
|
+ {"editable_by_groups", result.view->settings.editable_by_groups}
|
|
|
};
|
|
|
|
|
|
res.set_content(view_json.dump(), "application/json");
|
|
|
@@ -4452,6 +4473,21 @@ void HttpServer::HandleUpdateView(const httplib::Request& req, httplib::Response
|
|
|
settings.icon = settings_json.value("icon", "");
|
|
|
settings.filters = settings_json.value("filters", nlohmann::json::object());
|
|
|
settings.sort = settings_json.value("sort", nlohmann::json::object());
|
|
|
+ // Parse access control arrays
|
|
|
+ if (settings_json.contains("visible_to_groups") && settings_json["visible_to_groups"].is_array()) {
|
|
|
+ for (const auto& group : settings_json["visible_to_groups"]) {
|
|
|
+ if (group.is_string()) {
|
|
|
+ settings.visible_to_groups.push_back(group.get<std::string>());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (settings_json.contains("editable_by_groups") && settings_json["editable_by_groups"].is_array()) {
|
|
|
+ for (const auto& group : settings_json["editable_by_groups"]) {
|
|
|
+ if (group.is_string()) {
|
|
|
+ settings.editable_by_groups.push_back(group.get<std::string>());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
request.settings = settings;
|
|
|
}
|
|
|
|
|
|
@@ -4515,7 +4551,9 @@ void HttpServer::HandleUpdateView(const httplib::Request& req, httplib::Response
|
|
|
{"show_in_sidebar", result.view->settings.show_in_sidebar},
|
|
|
{"icon", result.view->settings.icon},
|
|
|
{"filters", result.view->settings.filters},
|
|
|
- {"sort", result.view->settings.sort}
|
|
|
+ {"sort", result.view->settings.sort},
|
|
|
+ {"visible_to_groups", result.view->settings.visible_to_groups},
|
|
|
+ {"editable_by_groups", result.view->settings.editable_by_groups}
|
|
|
};
|
|
|
|
|
|
res.set_content(view_json.dump(), "application/json");
|