summaryrefslogtreecommitdiff
path: root/src/components/policy
diff options
context:
space:
mode:
authorAlexander <akutsan@luxoft.com>2018-10-12 16:19:45 +0000
committerAlexander <akutsan@luxoft.com>2018-10-15 20:05:52 +0000
commit3f37ee5c1c1f3a97b98b6dc4bfb1a20444d3b8dd (patch)
tree8623d1c045b06f0e25f5a9f877a8392ce189f3ee /src/components/policy
parenta79f04439de495787f660019859d46eede5b07e2 (diff)
downloadsdl_core-3f37ee5c1c1f3a97b98b6dc4bfb1a20444d3b8dd.tar.gz
Load module types from referecced group for app_policies
If appllication have default policies, sqldb does not store module types for this application separately. During loading db SDL should check that application have default policies and select from module_types sql table sing "default" key but not appid key. In function `GatherApplicationPoliciesSection` already exist check for default policies : ``` if (IsDefaultPolicy(app_id)) { (*policies).apps[app_id].set_to_string(kDefaultId); } ``` Its setup stringified representation of application policies : "default". This stringified reference ("default") used for select module type. Fixes : https://github.com/smartdevicelink/sdl_core/issues/2670
Diffstat (limited to 'src/components/policy')
-rw-r--r--src/components/policy/policy_regular/src/sql_pt_representation.cc21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/components/policy/policy_regular/src/sql_pt_representation.cc b/src/components/policy/policy_regular/src/sql_pt_representation.cc
index 4f5dbc4c3b..bb08dd185b 100644
--- a/src/components/policy/policy_regular/src/sql_pt_representation.cc
+++ b/src/components/policy/policy_regular/src/sql_pt_representation.cc
@@ -692,6 +692,7 @@ bool SQLPTRepresentation::GatherApplicationPoliciesSection(
while (query.Next()) {
rpc::Nullable<policy_table::ApplicationParams> params;
const std::string& app_id = query.GetString(0);
+
if (IsApplicationRevoked(app_id)) {
params.set_to_null();
(*policies).apps[app_id] = params;
@@ -720,29 +721,35 @@ bool SQLPTRepresentation::GatherApplicationPoliciesSection(
if (!query.IsNull(3)) {
*params.certificate = query.GetString(4);
}
- if (!GatherAppGroup(app_id, &params.groups)) {
+
+ const auto& gather_app_id = ((*policies).apps[app_id].is_string())
+ ? (*policies).apps[app_id].get_string()
+ : app_id;
+
+ if (!GatherAppGroup(gather_app_id, &params.groups)) {
return false;
}
bool denied = false;
- if (!GatherRemoteControlDenied(app_id, &denied)) {
+ if (!GatherRemoteControlDenied(gather_app_id, &denied)) {
return false;
}
if (!denied) {
- if (!GatherModuleType(app_id, &*params.moduleType)) {
+ // Module types should be selected from db by referenced groups
+ if (!GatherModuleType(gather_app_id, &*params.moduleType)) {
return false;
}
}
- if (!GatherNickName(app_id, &*params.nicknames)) {
+ if (!GatherNickName(gather_app_id, &*params.nicknames)) {
return false;
}
- if (!GatherAppType(app_id, &*params.AppHMIType)) {
+ if (!GatherAppType(gather_app_id, &*params.AppHMIType)) {
return false;
}
- if (!GatherRequestType(app_id, &*params.RequestType)) {
+ if (!GatherRequestType(gather_app_id, &*params.RequestType)) {
return false;
}
- if (!GatherRequestSubType(app_id, &*params.RequestSubType)) {
+ if (!GatherRequestSubType(gather_app_id, &*params.RequestSubType)) {
return false;
}