summaryrefslogtreecommitdiffstats
path: root/user_channel/user_mgmt.cpp
diff options
context:
space:
mode:
authorRichard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>2018-11-13 19:00:58 +0530
committerRichard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>2018-11-20 11:33:52 +0530
commit282e79b49e6b36dac304b72ed0e9d065fb5b818c (patch)
tree511c6dbe5b5f7cfaed3247f1be5524874f65a828 /user_channel/user_mgmt.cpp
parentf4b2b090a4c67e132d4c22fdc13ecbb261c6147a (diff)
downloadphosphor-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.cpp27
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,
OpenPOWER on IntegriCloud