diff options
Diffstat (limited to 'src/components/policy/policy_external/src/sql_pt_ext_representation.cc')
-rw-r--r-- | src/components/policy/policy_external/src/sql_pt_ext_representation.cc | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/components/policy/policy_external/src/sql_pt_ext_representation.cc b/src/components/policy/policy_external/src/sql_pt_ext_representation.cc index a43b22a3b8..b19feddee6 100644 --- a/src/components/policy/policy_external/src/sql_pt_ext_representation.cc +++ b/src/components/policy/policy_external/src/sql_pt_ext_representation.cc @@ -675,6 +675,21 @@ bool SQLPTExtRepresentation::SaveApplicationPoliciesSection( return false; } + if (!query_delete.Exec(sql_pt::kDeleteAppServiceHandledRpcs)) { + LOG4CXX_WARN(logger_, "Incorrect delete from handled rpcs."); + return false; + } + + if (!query_delete.Exec(sql_pt::kDeleteAppServiceNames)) { + LOG4CXX_WARN(logger_, "Incorrect delete from service names."); + return false; + } + + if (!query_delete.Exec(sql_pt::kDeleteAppServiceTypes)) { + LOG4CXX_WARN(logger_, "Incorrect delete from handled service types."); + return false; + } + // First, all predefined apps (e.g. default, pre_DataConsent) should be saved, // otherwise another app with the predefined permissions can get incorrect // permissions @@ -729,6 +744,10 @@ bool SQLPTExtRepresentation::SaveSpecificAppPolicy( if (!SaveRequestSubType(app.first, *app.second.RequestSubType)) { return false; } + if (!SaveAppServiceParameters(app.first, + *app.second.app_service_parameters)) { + return false; + } // Stop saving other params, since predefined permissions already set return true; } @@ -752,6 +771,31 @@ bool SQLPTExtRepresentation::SaveSpecificAppPolicy( app_query.Bind(5, app.second.is_null()); app_query.Bind(6, *app.second.memory_kb); app_query.Bind(7, static_cast<int64_t>(*app.second.heart_beat_timeout_ms)); + app.second.certificate.is_initialized() + ? app_query.Bind(8, *app.second.certificate) + : app_query.Bind(8); + app.second.hybrid_app_preference.is_initialized() + ? app_query.Bind(9, + std::string(policy_table::EnumToJsonString( + *app.second.hybrid_app_preference))) + : app_query.Bind(9); + app.second.endpoint.is_initialized() + ? app_query.Bind(10, *app.second.endpoint) + : app_query.Bind(10); + app.second.enabled.is_initialized() ? app_query.Bind(11, *app.second.enabled) + : app_query.Bind(11); + app.second.auth_token.is_initialized() + ? app_query.Bind(12, *app.second.auth_token) + : app_query.Bind(12); + app.second.cloud_transport_type.is_initialized() + ? app_query.Bind(13, *app.second.cloud_transport_type) + : app_query.Bind(13); + app.second.icon_url.is_initialized() + ? app_query.Bind(14, *app.second.icon_url) + : app_query.Bind(14); + app.second.allow_unknown_rpc_passthrough.is_initialized() + ? app_query.Bind(15, *app.second.allow_unknown_rpc_passthrough) + : app_query.Bind(15); if (!app_query.Exec() || !app_query.Reset()) { LOG4CXX_WARN(logger_, "Incorrect insert into application."); @@ -786,6 +830,11 @@ bool SQLPTExtRepresentation::SaveSpecificAppPolicy( return false; } + if (!SaveAppServiceParameters(app.first, + *app.second.app_service_parameters)) { + return false; + } + return true; } @@ -873,7 +922,24 @@ bool SQLPTExtRepresentation::GatherApplicationPoliciesSection( params.steal_focus = query.GetBoolean(4); *params.memory_kb = query.GetInteger(5); *params.heart_beat_timeout_ms = query.GetUInteger(6); + if (!query.IsNull(7)) { + *params.certificate = query.GetString(7); + } + // Read cloud app properties + policy_table::HybridAppPreference hap; + bool valid = policy_table::EnumFromJsonString(query.GetString(8), &hap); + if (valid) { + *params.hybrid_app_preference = hap; + } + *params.endpoint = query.GetString(9); + if (!query.IsNull(10)) { + *params.enabled = query.GetBoolean(10); + } + *params.auth_token = query.GetString(11); + *params.cloud_transport_type = query.GetString(12); + *params.icon_url = query.GetString(13); + *params.allow_unknown_rpc_passthrough = query.GetBoolean(14); const auto& gather_app_id = ((*policies).apps[app_id].is_string()) ? (*policies).apps[app_id].get_string() : app_id; @@ -906,6 +972,10 @@ bool SQLPTExtRepresentation::GatherApplicationPoliciesSection( if (!GatherRequestSubType(gather_app_id, &*params.RequestSubType)) { return false; } + if (!GatherAppServiceParameters(gather_app_id, + &*params.app_service_parameters)) { + return false; + } GatherPreconsentedGroup(gather_app_id, &*params.preconsented_groups); (*policies).apps[app_id] = params; } |