修改密码时,需要使用旧密码进行确认

This commit is contained in:
luoliangyi 2022-12-12 10:32:01 +08:00
parent fa5e152e58
commit 0a27f3f095
5 changed files with 52 additions and 20 deletions

View File

@ -111,7 +111,7 @@ HGResult HGAPI HGPdtToolDb_SetPassword(HGPdtToolDbUserMgr userMgr, const HGChar*
return userMgrImpl->SetPassword(userName, pwd); return userMgrImpl->SetPassword(userName, pwd);
} }
HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGChar* newPwd) HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGChar* oldPwd, const HGChar* newPwd)
{ {
if (NULL == userMgr) if (NULL == userMgr)
{ {
@ -119,7 +119,7 @@ HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGCh
} }
HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr; HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr;
return userMgrImpl->ModifyPassword(newPwd); return userMgrImpl->ModifyPassword(oldPwd, newPwd);
} }
HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar* xlsPath) HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar* xlsPath)

View File

@ -123,7 +123,7 @@ HGEXPORT HGResult HGAPI HGPdtToolDb_DestroyUser(HGPdtToolDbUserMgr userMgr, cons
HGEXPORT HGResult HGAPI HGPdtToolDb_SetPassword(HGPdtToolDbUserMgr userMgr, const HGChar* userName, const HGChar* pwd); HGEXPORT HGResult HGAPI HGPdtToolDb_SetPassword(HGPdtToolDbUserMgr userMgr, const HGChar* userName, const HGChar* pwd);
/* 修改本账户的密码 */ /* 修改本账户的密码 */
HGEXPORT HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGChar* newPwd); HGEXPORT HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGChar* oldPwd, const HGChar* newPwd);
/* 导出所有设备测试信息到XLS文件需要管理员账户才能调用 */ /* 导出所有设备测试信息到XLS文件需要管理员账户才能调用 */
HGEXPORT HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar *xlsPath); HGEXPORT HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar *xlsPath);

View File

@ -305,17 +305,9 @@ HGResult HGPdtToolDbUserMgrImpl::CreateUser(const HGChar* userName, const HGChar
} }
char sqlCmd[1024] = {0}; char sqlCmd[1024] = {0};
sprintf(sqlCmd, "create user '%s'@'%%' identified by '%s';", userName, defPwd); sprintf(sqlCmd, "grant all privileges on huago_production_tool.* to '%s'@'%%' identified by '%s';", userName, defPwd);
int ret = mysql_query(m_sql, sqlCmd); int ret = mysql_query(m_sql, sqlCmd);
if (0 != ret) return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL;
{
return HGBASE_ERR_FAIL;
}
sprintf(sqlCmd, "grant all privileges on huago_production_tool.* to '%s'@'%%' with grant option;", userName);
ret = mysql_query(m_sql, sqlCmd);
assert(0 == ret);
return HGBASE_ERR_OK;
} }
HGResult HGPdtToolDbUserMgrImpl::DestroyUser(const HGChar* userName) HGResult HGPdtToolDbUserMgrImpl::DestroyUser(const HGChar* userName)
@ -373,21 +365,61 @@ HGResult HGPdtToolDbUserMgrImpl::SetPassword(const HGChar* userName, const HGCha
return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL;
} }
HGResult HGPdtToolDbUserMgrImpl::ModifyPassword(const HGChar* newPwd) HGResult HGPdtToolDbUserMgrImpl::ModifyPassword(const HGChar* oldPwd, const HGChar* newPwd)
{ {
if (NULL == m_sql) if (NULL == m_sql)
{ {
return HGBASE_ERR_FAIL; return HGBASE_ERR_FAIL;
} }
if (NULL == newPwd || 0 == *newPwd) if (NULL == oldPwd || 0 == *oldPwd || NULL == newPwd || 0 == *newPwd)
{ {
return HGBASE_ERR_INVALIDARG; return HGBASE_ERR_INVALIDARG;
} }
std::string oldAuthStr;
char sqlCmd[1024] = { 0 }; char sqlCmd[1024] = { 0 };
sprintf(sqlCmd, "set password for '%s'@'%%' = password('%s');", m_userName.c_str(), newPwd); sprintf(sqlCmd, "select authentication_string from mysql.user where user = '%s' and host = '%%';", m_userName.c_str());
int ret = mysql_query(m_sql, sqlCmd); int ret = mysql_query(m_sql, sqlCmd);
if (0 == ret)
{
MYSQL_RES* sqlRes = mysql_use_result(m_sql);
if (NULL != sqlRes)
{
MYSQL_ROW row = mysql_fetch_row(sqlRes);
assert(NULL != row[0]);
oldAuthStr = row[0];
mysql_free_result(sqlRes);
}
}
if (oldAuthStr.empty())
{
return HGBASE_ERR_FAIL;
}
std::string oldAuthStr2;
sprintf(sqlCmd, "select password('%s');", oldPwd);
ret = mysql_query(m_sql, sqlCmd);
if (0 == ret)
{
MYSQL_RES* sqlRes = mysql_use_result(m_sql);
if (NULL != sqlRes)
{
MYSQL_ROW row = mysql_fetch_row(sqlRes);
assert(NULL != row[0]);
oldAuthStr2 = row[0];
mysql_free_result(sqlRes);
}
}
if (0 != strcmp(oldAuthStr.c_str(), oldAuthStr2.c_str()))
{
return HGBASE_ERR_FAIL;
}
sprintf(sqlCmd, "set password for '%s'@'%%' = password('%s');", m_userName.c_str(), newPwd);
ret = mysql_query(m_sql, sqlCmd);
return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL;
} }

View File

@ -23,7 +23,7 @@ public:
HGResult CreateUser(const HGChar* userName, const HGChar* defPwd); HGResult CreateUser(const HGChar* userName, const HGChar* defPwd);
HGResult DestroyUser(const HGChar* userName); HGResult DestroyUser(const HGChar* userName);
HGResult SetPassword(const HGChar* userName, const HGChar* pwd); HGResult SetPassword(const HGChar* userName, const HGChar* pwd);
HGResult ModifyPassword(const HGChar* newPwd); HGResult ModifyPassword(const HGChar* oldPwd, const HGChar* newPwd);
HGResult Export(const HGChar* xlsPath); HGResult Export(const HGChar* xlsPath);
HGResult GetConfig(const HGChar *key, HGChar *value, HGUInt maxLen); HGResult GetConfig(const HGChar *key, HGChar *value, HGUInt maxLen);
HGResult SetConfig(const HGChar* key, const HGChar *value); HGResult SetConfig(const HGChar* key, const HGChar *value);

View File

@ -5,7 +5,7 @@
int main() int main()
{ {
HGPdtToolDbUserMgr userMgr = NULL; HGPdtToolDbUserMgr userMgr = NULL;
HGPdtToolDb_CreateUserMgr("192.168.1.70", 3306, "root", "123456", &userMgr); HGPdtToolDb_CreateUserMgr("127.0.0.1", 3306, "root", "123456", &userMgr);
if (NULL != userMgr) if (NULL != userMgr)
{ {
HGChar* name[256]; HGChar* name[256];
@ -14,8 +14,8 @@ int main()
//HGPdtToolDb_DestroyUser(userMgr, "huago"); //HGPdtToolDb_DestroyUser(userMgr, "huago");
HGPdtToolDb_CreateUser(userMgr, "huago", "huago"); //HGPdtToolDb_CreateUser(userMgr, "huago", "huago");
//HGPdtToolDb_ModifyPassword(userMgr, "654321"); HGPdtToolDb_ModifyPassword(userMgr, "12345", "123456");
//HGPdtToolDb_SetPassword(userMgr, "huago", "qqq"); //HGPdtToolDb_SetPassword(userMgr, "huago", "qqq");
HGPdtToolDbDevice device = NULL; HGPdtToolDbDevice device = NULL;