diff options
author | Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com> | 2018-11-13 19:00:58 +0530 |
---|---|---|
committer | Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com> | 2018-11-20 11:33:52 +0530 |
commit | 282e79b49e6b36dac304b72ed0e9d065fb5b818c (patch) | |
tree | 511c6dbe5b5f7cfaed3247f1be5524874f65a828 /user_channel/user_mgmt.cpp | |
parent | f4b2b090a4c67e132d4c22fdc13ecbb261c6147a (diff) | |
download | phosphor-host-ipmid-282e79b49e6b36dac304b72ed0e9d065fb5b818c.tar.gz phosphor-host-ipmid-282e79b49e6b36dac304b72ed0e9d065fb5b818c.zip |
Add test & user enabled state in set user password
Support for test password and user enabled state in Set user
password command
Unit Test:
1. Performed user enabled & disabled and verified the state change
2. Performed test user password - both pass & fail condition
Change-Id: I0eb91ad849e43072b1d9e90d777304fabdfb40bc
Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
Diffstat (limited to 'user_channel/user_mgmt.cpp')
-rw-r--r-- | user_channel/user_mgmt.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/user_channel/user_mgmt.cpp b/user_channel/user_mgmt.cpp index e320e3f..e90bff6 100644 --- a/user_channel/user_mgmt.cpp +++ b/user_channel/user_mgmt.cpp @@ -631,6 +631,33 @@ bool UserAccess::isValidUserName(const char* userNameInChar) return true; } +ipmi_ret_t UserAccess::setUserEnabledState(const uint8_t& userId, + const bool& enabledState) +{ + if (!isValidUserId(userId)) + { + return IPMI_CC_PARM_OUT_OF_RANGE; + } + boost::interprocess::scoped_lock<boost::interprocess::named_recursive_mutex> + userLock{*userMutex}; + UserInfo* userInfo = getUserInfo(userId); + std::string userName; + userName.assign(reinterpret_cast<char*>(userInfo->userName), 0, + ipmiMaxUserName); + if (userName.empty()) + { + log<level::DEBUG>("User name not set / invalid"); + return IPMI_CC_UNSPECIFIED_ERROR; + } + if (userInfo->userEnabled != enabledState) + { + std::string userPath = std::string(userObjBasePath) + "/" + userName; + setDbusProperty(bus, getUserServiceName().c_str(), userPath.c_str(), + usersInterface, userEnabledProperty, enabledState); + } + return IPMI_CC_OK; +} + ipmi_ret_t UserAccess::setUserPrivilegeAccess(const uint8_t& userId, const uint8_t& chNum, const UserPrivAccess& privAccess, |