diff options
Diffstat (limited to 'src/components/application_manager/src/commands/command_request_impl.cc')
-rw-r--r-- | src/components/application_manager/src/commands/command_request_impl.cc | 100 |
1 files changed, 4 insertions, 96 deletions
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 e9dcd6e4b0..f4a352fdc4 100644 --- a/src/components/application_manager/src/commands/command_request_impl.cc +++ b/src/components/application_manager/src/commands/command_request_impl.cc @@ -222,7 +222,7 @@ bool CommandRequestImpl::Init() { } bool CommandRequestImpl::CheckPermissions() { - return CheckAllowedParameters(); + return CheckAllowedParameters(Command::CommandSource::SOURCE_MOBILE); } bool CommandRequestImpl::CleanUp() { @@ -691,7 +691,8 @@ mobile_apis::Result::eType CommandRequestImpl::GetMobileResultCode( return mobile_result; } -bool CommandRequestImpl::CheckAllowedParameters() { +bool CommandRequestImpl::CheckAllowedParameters( + const Command::CommandSource source) { LOG4CXX_AUTO_TRACE(logger_); // RegisterAppInterface should always be allowed @@ -700,64 +701,7 @@ bool CommandRequestImpl::CheckAllowedParameters() { return true; } - const ApplicationSharedPtr app = - application_manager_.application(connection_key()); - if (!app) { - LOG4CXX_ERROR(logger_, - "There is no registered application with " - "connection key '" - << connection_key() << "'"); - return false; - } - - RPCParams params; - - const smart_objects::SmartObject& s_map = (*message_)[strings::msg_params]; - smart_objects::SmartMap::const_iterator iter = s_map.map_begin(); - smart_objects::SmartMap::const_iterator iter_end = s_map.map_end(); - - for (; iter != iter_end; ++iter) { - LOG4CXX_DEBUG(logger_, "Request's param: " << iter->first); - params.insert(iter->first); - } - - mobile_apis::Result::eType check_result = - mobile_apis::Result::eType::INVALID_ID; - const auto current_window_id = window_id(); - if (app->WindowIdExists(current_window_id)) { - check_result = application_manager_.CheckPolicyPermissions( - app, - current_window_id, - MessageHelper::StringifiedFunctionID( - static_cast<mobile_api::FunctionID::eType>(function_id())), - params, - ¶meters_permissions_); - } - - // Check, if RPC is allowed by policy - if (mobile_apis::Result::SUCCESS != check_result) { - smart_objects::SmartObjectSPtr response = - MessageHelper::CreateBlockedByPoliciesResponse( - static_cast<mobile_api::FunctionID::eType>(function_id()), - check_result, - correlation_id(), - app->app_id()); - - rpc_service_.SendMessageToMobile(response); - return false; - } - - // If no parameters specified in policy table, no restriction will be - // applied for parameters - if (parameters_permissions_.allowed_params.empty() && - parameters_permissions_.disallowed_params.empty() && - parameters_permissions_.undefined_params.empty()) { - return true; - } - - RemoveDisallowedParameters(); - - return true; + return CommandImpl::CheckAllowedParameters(source); } bool CommandRequestImpl::CheckHMICapabilities( @@ -794,42 +738,6 @@ bool CommandRequestImpl::CheckHMICapabilities( return false; } -void CommandRequestImpl::RemoveDisallowedParameters() { - LOG4CXX_AUTO_TRACE(logger_); - - smart_objects::SmartObject& params = (*message_)[strings::msg_params]; - - for (const auto& key : params.enumerate()) { - if (parameters_permissions_.disallowed_params.end() != - parameters_permissions_.disallowed_params.find(key)) { - // Remove from request all disallowed parameters - params.erase(key); - removed_parameters_permissions_.disallowed_params.insert(key); - LOG4CXX_INFO(logger_, - "Following parameter is disallowed by user: " << key); - } - - else if (removed_parameters_permissions_.undefined_params.end() != - removed_parameters_permissions_.undefined_params.find(key)) { - // Remove from request all undefined yet parameters - params.erase(key); - removed_parameters_permissions_.undefined_params.insert(key); - LOG4CXX_INFO(logger_, - "Following parameter is disallowed by policy: " << key); - } - - else if (parameters_permissions_.allowed_params.end() == - parameters_permissions_.allowed_params.find(key)) { - // Remove from request all parameters missed in allowed - params.erase(key); - removed_parameters_permissions_.undefined_params.insert(key); - LOG4CXX_INFO(logger_, - "Following parameter is not found among allowed parameters '" - << key << "' and will be treated as disallowed."); - } - } -} - void CommandRequestImpl::AddDissalowedParameterToInfoString( std::string& info, const std::string& param) const { // prepare disallowed params enumeration for response info string |