Add wrapper in CynaraAdmin for Cynara listing policies. 53/31853/31
authorMichal Eljasiewicz <m.eljasiewic@samsung.com>
Thu, 11 Dec 2014 07:47:43 +0000 (08:47 +0100)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Thu, 29 Jan 2015 13:33:23 +0000 (05:33 -0800)
Change-Id: I7f8a81e6479a26446b91ac745b7b5df28ab78675
Signed-off-by: Michal Eljasiewicz <m.eljasiewic@samsung.com>
src/common/cynara.cpp
src/common/include/cynara.h

index 4b61a56..c29f426 100644 (file)
@@ -335,6 +335,30 @@ void CynaraAdmin::UserInit(uid_t uid, security_manager_user_type userType)
     CynaraAdmin::getInstance().SetPolicies(policies);
 }
 
+void CynaraAdmin::ListPolicies(
+    const std::string &bucketName,
+    const std::string &appId,
+    const std::string &user,
+    const std::string &privilege,
+    std::vector<CynaraAdminPolicy> &policies)
+{
+    struct cynara_admin_policy ** pp_policies = nullptr;
+
+    checkCynaraError(
+        cynara_admin_list_policies(m_CynaraAdmin, bucketName.c_str(), appId.c_str(),
+            user.c_str(), privilege.c_str(), &pp_policies),
+        "Error while getting list of policies for bucket: " + bucketName);
+
+    for (std::size_t i = 0; pp_policies[i] != nullptr; i++) {
+        policies.push_back(std::move(*static_cast<CynaraAdminPolicy*>(pp_policies[i])));
+
+        free(pp_policies[i]);
+    }
+
+    free(pp_policies);
+
+}
+
 Cynara::Cynara()
 {
     checkCynaraError(
index b74a4ec..7713f42 100644 (file)
@@ -135,6 +135,22 @@ public:
      */
     void UserInit(uid_t uid, security_manager_user_type userType);
 
+    /**
+     * List Cynara policies that match selected criteria in given bucket.
+     *
+     * @param bucketName name of the bucket to search policies in
+     * @param appId string with id of app to match in search
+     * @param user user string to match in search
+     * @param privilege privilege string to match in search
+     * @param policies empty vector for results of policies filtering.
+     *
+     */
+    void ListPolicies(const std::string &bucketName,
+        const std::string &appId,
+        const std::string &user,
+        const std::string &privilege,
+        std::vector<CynaraAdminPolicy> &policies);
+
 private:
     CynaraAdmin();
     struct cynara_admin *m_CynaraAdmin;