From 76323825d951027394fa27cfa7461e840a546f4b Mon Sep 17 00:00:00 2001 From: AKalinich-Luxoft Date: Tue, 3 Oct 2017 12:00:11 +0300 Subject: Fix info message param for different disallowed param cases Added generating of info message depending on check permissions result: - for disallowed rpc - for all disallowed params in rpc - for partially disallowed params in rpc --- .../application_manager/commands/command_impl.h | 4 +++ .../src/application_manager_impl.cc | 3 +++ .../src/commands/command_request_impl.cc | 31 ++++++++++++++++++++-- .../application_manager/application_manager.h | 3 ++- 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/components/application_manager/include/application_manager/commands/command_impl.h b/src/components/application_manager/include/application_manager/commands/command_impl.h index 1ad6a6f2e6..8c67156215 100644 --- a/src/components/application_manager/include/application_manager/commands/command_impl.h +++ b/src/components/application_manager/include/application_manager/commands/command_impl.h @@ -46,6 +46,10 @@ namespace application_manager { * table */ struct CommandParametersPermissions { + CommandParametersPermissions() + : permit_result(PermitResult::kRpcDisallowed) {} + + PermitResult permit_result; RPCParams allowed_params; RPCParams disallowed_params; RPCParams undefined_params; diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc index ba92382f4d..2ebc659e5e 100644 --- a/src/components/application_manager/src/application_manager_impl.cc +++ b/src/components/application_manager/src/application_manager_impl.cc @@ -3351,6 +3351,7 @@ mobile_apis::Result::eType ApplicationManagerImpl::CheckPolicyPermissions( GetPolicyHandler().CheckPermissions(app, function_id, rpc_params, result); if (NULL != params_permissions) { + params_permissions->permit_result = result.hmi_level_permitted; params_permissions->allowed_params = result.list_of_allowed_params; params_permissions->disallowed_params = result.list_of_disallowed_params; params_permissions->undefined_params = result.list_of_undefined_params; @@ -3376,8 +3377,10 @@ mobile_apis::Result::eType ApplicationManagerImpl::CheckPolicyPermissions( switch (result.hmi_level_permitted) { case policy::kRpcDisallowed: + case policy::kRpcAllParamsDisallowed: return mobile_apis::Result::DISALLOWED; case policy::kRpcUserDisallowed: + case policy::kRpcAllParamsUserDisallowed: return mobile_apis::Result::USER_DISALLOWED; default: return mobile_apis::Result::INVALID_ENUM; diff --git a/src/components/application_manager/src/commands/command_request_impl.cc b/src/components/application_manager/src/commands/command_request_impl.cc index a2e4e44ec3..d283c648a9 100644 --- a/src/components/application_manager/src/commands/command_request_impl.cc +++ b/src/components/application_manager/src/commands/command_request_impl.cc @@ -105,6 +105,25 @@ const std::string CreateInfoForUnsupportedResult( } } +std::string CreateInfoForPolicyPermitResult(const PermitResult value) { + switch (value) { + case PermitResult::kRpcDisallowed: { + return "RPC is disallowed by Policies"; + } + case PermitResult::kRpcUserDisallowed: { + return "RPC is disallowed by the User"; + } + case PermitResult::kRpcAllParamsDisallowed: { + return "Requested parameters are disallowed by Policies"; + } + case PermitResult::kRpcAllParamsUserDisallowed: { + return "Requested parameters are disallowed by User"; + } + default: + return std::string(); + } +} + bool CheckResultCode(const ResponseInfo& first, const ResponseInfo& second) { if (first.is_ok && second.is_unsupported_resource) { return true; @@ -614,7 +633,11 @@ bool CommandRequestImpl::CheckAllowedParameters() { check_result, correlation_id(), app->app_id()); - + std::string info = + CreateInfoForPolicyPermitResult(parameters_permissions_.permit_result); + if (!info.empty()) { + (*response)[strings::msg_params][strings::info] = info; + } application_manager_.SendMessageToMobile(response); return false; } @@ -753,7 +776,11 @@ void CommandRequestImpl::AddDisallowedParametersToInfo( } if (!info.empty()) { - info += " disallowed by policies."; + const uint32_t params_count = + removed_parameters_permissions_.disallowed_params.size() + + removed_parameters_permissions_.undefined_params.size(); + info += params_count > 1 ? " parameters are " : " parameter is "; + info += "disallowed by Policies"; if (!response[strings::msg_params][strings::info].asString().empty()) { // If we already have info add info about disallowed params to it diff --git a/src/components/include/application_manager/application_manager.h b/src/components/include/application_manager/application_manager.h index c3193d65e2..cc7c4e746b 100644 --- a/src/components/include/application_manager/application_manager.h +++ b/src/components/include/application_manager/application_manager.h @@ -85,8 +85,9 @@ class EventDispatcher; class Application; class StateControllerImpl; -struct CommandParametersPermissions; using policy::RPCParams; +using policy::PermitResult; +struct CommandParametersPermissions; typedef std::vector AppSharedPtrs; struct ApplicationsAppIdSorter { bool operator()(const ApplicationSharedPtr lhs, -- cgit v1.2.1