From 590077fe06e488681c77c49afef49fd08db77d37 Mon Sep 17 00:00:00 2001 From: Krzysztof Sasiak Date: Tue, 10 Feb 2015 09:28:33 +0100 Subject: [PATCH] List all users registered in Cynara Change-Id: I2b167b39106368ad1808739956bd55e444b3ab5a --- src/common/cynara.cpp | 24 ++++++++++++++++++++++++ src/common/include/cynara.h | 7 +++++++ 2 files changed, 31 insertions(+) diff --git a/src/common/cynara.cpp b/src/common/cynara.cpp index fba5fb5..80e5b88 100644 --- a/src/common/cynara.cpp +++ b/src/common/cynara.cpp @@ -361,6 +361,30 @@ void CynaraAdmin::UserInit(uid_t uid, security_manager_user_type userType) CynaraAdmin::getInstance().SetPolicies(policies); } +void CynaraAdmin::ListUsers(std::vector &listOfUsers) +{ + std::vector 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 policies; diff --git a/src/common/include/cynara.h b/src/common/include/cynara.h index 720e2f4..659b2db 100644 --- a/src/common/include/cynara.h +++ b/src/common/include/cynara.h @@ -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 &listOfUsers); + + /** * Removes all entries for a user from cynara database * * @param uid removed user uid -- 2.7.4