LAPTOP-T815PCOQ\25526
2024-11-20 8dbd14952aa622587a92866dc01943869ea4f9dc
SourceCode/Bond/BondEq/UserManagerDlg.cpp
@@ -12,6 +12,7 @@
#include <set>
const COLORREF CURR_USER_BK_COLOR = RGB(0, 255, 0);
// CUserManagerDlg 对话框
@@ -113,12 +114,12 @@
   if (!usersData.empty()) {
      m_gridUserManager.SetRowCount(usersData.size() + 1);
      for (size_t i = 0; i < usersData.size(); i++) {
      for (int i = 0; i < usersData.size(); i++) {
         int nRowIdx = i + 1;
         int nColIdx = 0;
         m_gridUserManager.SetItemText(nRowIdx, nColIdx++, std::to_string(i + 1).c_str());
         for (size_t j = 0; j < usersData[i].size(); j++) {
         for (int j = 0; j < usersData[i].size(); j++) {
            if (usersData[i][1].empty()) {
               continue;
            }
@@ -177,8 +178,9 @@
   }
   for (int i = 0; i < nCols; i++) {
      bool ret = m_gridUserManager.SetItemBkColour(nCurrNameRow, i, RGB(0, 255, 0));
      m_gridUserManager.SetItemBkColour(nCurrNameRow, i, CURR_USER_BK_COLOR);
   }
   m_gridUserManager.SetItemState(nCurrNameRow, 3, GVIS_READONLY);
   m_gridUserManager.Invalidate();
   m_gridUserManager.UpdateWindow();
@@ -463,8 +465,11 @@
   // 第4列为权限列, 第8列为角色描述列, 从映射中查找对应描述
   if (nCol == 3) {
      if (m_gridUserManager.GetItemBkColour(nRow, nCol) == CURR_USER_BK_COLOR) {
         AfxMessageBox(_T("当前登录用户权限不能修改!"));
      }
      else {
      CString selectedRole = m_gridUserManager.GetItemText(nRow, nCol);
      auto it = m_mapRoleDescriptions.find(selectedRole);
      if (it != m_mapRoleDescriptions.end()) {
         m_gridUserManager.SetItemText(nRow, 7, it->second);
@@ -473,6 +478,7 @@
      else {
         m_gridUserManager.SetItemText(nRow, 7, _T(""));
         m_gridUserManager.RedrawCell(nRow, 7);
         }
      }
   }
@@ -560,10 +566,20 @@
   std::vector<std::vector<std::string>> vecData;
   std::set<std::string> usernameSet; // 用于存储用户名,检查是否重复
   int nCurrUserRow = -1;
   UserManager& userManager = UserManager::getInstance();
   for (int i = 1; i < m_gridUserManager.GetRowCount(); ++i) {
      std::vector<std::string> rowData;
      CString cellText = m_gridUserManager.GetItemText(i, 1);
      std::string username = CT2A(cellText.GetString());
      cellText = m_gridUserManager.GetItemText(i, 2);
      std::string userpass = CT2A(cellText.GetString());
      if (username.empty() || userpass.empty()) {
         AfxMessageBox(_T("用户名和密码不能为空!"));
         return;
      }
      if (usernameSet.find(username) != usernameSet.end()) {
         CString message;
@@ -571,8 +587,21 @@
         AfxMessageBox(message, MB_ICONEXCLAMATION);
         return;
      }
      usernameSet.insert(username);
      if (nCurrUserRow == -1 && m_gridUserManager.GetItemBkColour(i, 0) == CURR_USER_BK_COLOR){
         nCurrUserRow = i;
         if (username.compare(userManager.getCurrentUser()) != 0) {
            userManager.setCurrentUser(username);
         }
         if (userpass.compare(userManager.getCurrentPass()) != 0) {
            userManager.setCurrentPass(userpass);
         }
         userManager.clearSession();
         userManager.saveSession();
      }
      for (int j = 1; j < m_gridUserManager.GetColumnCount() - 1; ++j) {
         CString cellText = m_gridUserManager.GetItemText(i, j);
@@ -596,6 +625,6 @@
      vecData.push_back(rowData);
   }
   UserManager::getInstance().setUsers(vecData);
   userManager.setUsers(vecData);
   CDialogEx::OnOK();
}