List all users registered in Cynara 04/35204/8
authorKrzysztof Sasiak <k.sasiak@samsung.com>
Tue, 10 Feb 2015 08:28:33 +0000 (09:28 +0100)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Fri, 27 Feb 2015 16:25:30 +0000 (08:25 -0800)
Change-Id: I2b167b39106368ad1808739956bd55e444b3ab5a

src/common/cynara.cpp
src/common/include/cynara.h

index fba5fb5..80e5b88 100644 (file)
@@ -361,6 +361,30 @@ void CynaraAdmin::UserInit(uid_t uid, security_manager_user_type userType)
     CynaraAdmin::getInstance().SetPolicies(policies);
 }
 
+void CynaraAdmin::ListUsers(std::vector<uid_t> &listOfUsers)
+{
+    std::vector<CynaraAdminPolicy> tmpListOfUsers;
+    CynaraAdmin::getInstance().ListPolicies(
+        CynaraAdmin::Buckets.at(Bucket::MAIN),
+        CYNARA_ADMIN_WILDCARD,
+        CYNARA_ADMIN_ANY,
+        CYNARA_ADMIN_WILDCARD,
+        tmpListOfUsers);
+
+    for (const auto &tmpUser : tmpListOfUsers) {
+        std::string user = tmpUser.user;
+        if (!user.compare(CYNARA_ADMIN_WILDCARD))
+            continue;
+        try {
+            listOfUsers.push_back(std::stoul(user));
+        } catch (std::invalid_argument &e) {
+            LogError("Invalid UID: " << e.what());
+            continue;
+        };
+    };
+    LogDebug("Found users: " << listOfUsers.size());
+};
+
 void CynaraAdmin::UserRemove(uid_t uid)
 {
     std::vector<CynaraAdminPolicy> policies;
index 720e2f4..659b2db 100644 (file)
@@ -141,6 +141,13 @@ public:
     void UserInit(uid_t uid, security_manager_user_type userType);
 
     /**
+     * List all users registered in Cynara
+     *
+     * @param[out] listOfUsers list of users
+     */
+    void ListUsers(std::vector<uid_t> &listOfUsers);
+
+    /**
      * Removes all entries for a user from cynara database
      *
      * @param uid removed user uid