Remove cynara entries regarding removed user 36/34336/5
authorJan Cybulski <j.cybulski@samsung.com>
Thu, 29 Jan 2015 14:36:09 +0000 (15:36 +0100)
committerJan Cybulski <j.cybulski@samsung.com>
Thu, 29 Jan 2015 14:36:09 +0000 (15:36 +0100)
Change-Id: I807f4b5ebf76b29b5a9049a9a6bbfd51056d6697
Signed-off-by: Jan Cybulski <j.cybulski@samsung.com>
src/common/cynara.cpp
src/common/include/cynara.h
src/common/service_impl.cpp

index 4d4ec75..030041f 100644 (file)
@@ -337,6 +337,15 @@ void CynaraAdmin::UserInit(uid_t uid, security_manager_user_type userType)
     CynaraAdmin::getInstance().SetPolicies(policies);
 }
 
+void CynaraAdmin::UserRemove(uid_t uid)
+{
+    std::vector<CynaraAdminPolicy> policies;
+    std::string user = std::to_string(static_cast<unsigned int>(uid));
+
+    EmptyBucket(Buckets.at(Bucket::PRIVACY_MANAGER),true,
+            CYNARA_ADMIN_ANY, user, CYNARA_ADMIN_ANY);
+}
+
 void CynaraAdmin::ListPolicies(
     const std::string &bucketName,
     const std::string &appId,
index 98ce805..97a6375 100644 (file)
@@ -137,6 +137,13 @@ public:
     void UserInit(uid_t uid, security_manager_user_type userType);
 
     /**
+     * Removes all entries for a user from cynara database
+     *
+     * @param uid removed user uid
+     */
+    void UserRemove(uid_t uid);
+
+    /**
      * List Cynara policies that match selected criteria in given bucket.
      *
      * @param bucketName name of the bucket to search policies in
index 7eddd50..824b1a9 100644 (file)
@@ -400,8 +400,6 @@ int userDelete(uid_t uidDeleted, uid_t uid)
     if (uid != 0)
         return SECURITY_MANAGER_API_ERROR_AUTHENTICATION_FAILED;
 
-    //TODO remove policy information from cynara
-
     /*Uninstall all user apps*/
     std::vector<std::string> userApps;
     try {
@@ -419,6 +417,8 @@ int userDelete(uid_t uidDeleted, uid_t uid)
         }
     }
 
+    CynaraAdmin::getInstance().UserRemove(uidDeleted);
+
     return ret;
 }