From: Zofia Abramowska Date: Wed, 21 Jun 2017 16:31:00 +0000 (+0200) Subject: Simplify service plugin X-Git-Tag: submit/tizen/20170727.154157~1^2~52 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c3e603b46d8922f846f887a06119a7827c1609aa;p=platform%2Fcore%2Fsecurity%2Faskuser.git Simplify service plugin Service side plugin supports Ask user policy and translates it to DENY. Change-Id: If9a8601e18da68d59b116a2b5d8f6f0872748a4e --- diff --git a/src/plugin/service/ServicePlugin.cpp b/src/plugin/service/ServicePlugin.cpp index f557176..e9bbc3a 100644 --- a/src/plugin/service/ServicePlugin.cpp +++ b/src/plugin/service/ServicePlugin.cpp @@ -25,117 +25,47 @@ #include #include +#include #include #include -#include - -#include "CapacityCache.h" using namespace Cynara; -typedef std::tuple Key; -std::ostream &operator<<(std::ostream &os, const Key &key) { - os << "client: " << std::get<0>(key) - << ", user: " << std::get<1>(key) - << ", privilege: " << std::get<2>(key); - return os; -} - -std::ostream &operator<<(std::ostream &os, const PolicyResult &result) { - os << "type: " << result.policyType() - << ", metadata: " << result.metadata(); - return os; -} - namespace AskUser { -std::function hasher = [](const Key &key) { - const char separator = '\1'; - const auto &client = std::get<0>(key); - const auto &user = std::get<1>(key); - const auto &privilege = std::get<2>(key); - return client + user + privilege + separator + - std::to_string(client.size()) + separator + - std::to_string(user.size()) + separator + - std::to_string(privilege.size()); -}; - const std::vector serviceDescriptions = { { SupportedTypes::Service::ASK_USER, "Ask user" } }; class AskUserPlugin : public ServicePluginInterface { public: - AskUserPlugin() - : m_cache(hasher) - {} + AskUserPlugin() {} const std::vector &getSupportedPolicyDescr() { return serviceDescriptions; } - PluginStatus check(const std::string &client, - const std::string &user, - const std::string &privilege, + PluginStatus check(UNUSED const std::string &client, + UNUSED const std::string &user, + UNUSED const std::string &privilege, PolicyResult &result, - AgentType &requiredAgent, - PluginData &pluginData) noexcept + UNUSED AgentType &requiredAgent, + UNUSED PluginData &pluginData) noexcept { - try { - if (!m_cache.get(Key(client, user, privilege), result)) { - pluginData = Translator::Plugin::requestToData(client, user, privilege); - requiredAgent = AgentType(SupportedTypes::Agent::AgentType); - return PluginStatus::ANSWER_NOTREADY; - } - if (result.policyType() == SupportedTypes::Client::ALLOW_PER_LIFE) - result = PolicyResult(PredefinedPolicyType::ALLOW); - else - result = PolicyResult(PredefinedPolicyType::DENY); - return PluginStatus::ANSWER_READY; - } catch (const Translator::TranslateErrorException &e) { - LOGE("Error translating request to data : " << e.what()); - } catch (const std::exception &e) { - LOGE("Failed with std exception: " << e.what()); - } catch (...) { - LOGE("Failed with unknown exception: "); - } - return PluginStatus::ERROR; + result = PolicyResult(PredefinedPolicyType::DENY); + return PluginStatus::ANSWER_READY; } - PluginStatus update(const std::string &client, - const std::string &user, - const std::string &privilege, - const PluginData &agentData, + PluginStatus update(UNUSED const std::string &client, + UNUSED const std::string &user, + UNUSED const std::string &privilege, + UNUSED const PluginData &agentData, PolicyResult &result) noexcept { - try { - PolicyType resultType = Translator::Plugin::dataToAnswer(agentData); - result = PolicyResult(resultType); - - if (resultType == SupportedTypes::Client::ALLOW_PER_LIFE) { - m_cache.update(Key(client, user, privilege), PolicyResult(resultType)); - result = PolicyResult(PredefinedPolicyType::ALLOW); - } else if (resultType == SupportedTypes::Client::DENY_PER_LIFE) { - m_cache.update(Key(client, user, privilege), PolicyResult(resultType)); - result = PolicyResult(PredefinedPolicyType::DENY); - } - - return PluginStatus::SUCCESS; - } catch (const Translator::TranslateErrorException &e) { - LOGE("Error translating data to answer : " << e.what()); - } catch (const std::exception &e) { - LOGE("Failed with std exception: " << e.what()); - } catch (...) { - LOGE("Failed with unknown exception: "); - } - return PluginStatus::ERROR; - } - - void invalidate() { - m_cache.clear(); + result = PolicyResult(PredefinedPolicyType::DENY); + return PluginStatus::SUCCESS; } -private: - Plugin::CapacityCache m_cache; + void invalidate() {} }; } // namespace AskUser