// CChangePasswordDlg.cpp: 实现文件 // #include "stdafx.h" #include "BondEq.h" #include "afxdialogex.h" #include "ChangePasswordDlg.h" #include "UserManager.h" // CChangePasswordDlg 对话框 IMPLEMENT_DYNAMIC(CChangePasswordDlg, CDialogEx) CChangePasswordDlg::CChangePasswordDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DIALOG_CHANGE_PASSWORD, pParent) { } CChangePasswordDlg::~CChangePasswordDlg() { } bool CChangePasswordDlg::changeUserPassword(UserManager& userManager, const std::string& username, const std::string& newPassword) { if (!userManager.changePassword(username, newPassword)) { AfxMessageBox(_T("修改用户密码失败。")); return false; } return true; } void CChangePasswordDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_EDIT_CHANGE_USERNAME, m_editUsername); DDX_Control(pDX, IDC_EDIT_CHANGE_CURRENT_PASSWORD, m_editCurrentPassword); DDX_Control(pDX, IDC_EDIT_CHANGE_NEW_PASSWORD, m_editNewPassword); DDX_Control(pDX, IDC_EDIT_CHANGE_CONFIRM_PASSWORD, m_editConfirmPassword); } BEGIN_MESSAGE_MAP(CChangePasswordDlg, CDialogEx) ON_BN_CLICKED(IDOK, &CChangePasswordDlg::OnBnClickedOk) END_MESSAGE_MAP() // CChangePasswordDlg 消息处理程序 BOOL CChangePasswordDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 设置窗口标题和初始值 SetWindowText(_T("修改密码")); UserManager& userManager = UserManager::getInstance(); if (userManager.isLoggedIn()) { m_editUsername.SetWindowText(userManager.getCurrentUser().c_str()); } return TRUE; } void CChangePasswordDlg::OnBnClickedOk() { CString username, currentPassword, newPassword, confirmPassword; m_editUsername.GetWindowText(username); m_editCurrentPassword.GetWindowText(currentPassword); m_editNewPassword.GetWindowText(newPassword); m_editConfirmPassword.GetWindowText(confirmPassword); if (username.IsEmpty() || currentPassword.IsEmpty() || newPassword.IsEmpty() || confirmPassword.IsEmpty()) { AfxMessageBox(_T("所有字段均为必填项。")); return; } if (newPassword.Compare(confirmPassword) != 0) { AfxMessageBox(_T("新密码与确认密码不匹配。")); return; } #ifdef UNICODE std::string strUsername = CStringA(username); std::string strCurrentPassword = CStringA(currentPassword); std::string strNewPassword = CStringA(newPassword); #else std::string strUsername = username; std::string strCurrentPassword = currentPassword; std::string strNewPassword = newPassword; #endif UserManager& userManager = UserManager::getInstance(); if (userManager.isLoggedIn() && strCurrentPassword.compare(userManager.getCurrentPass()) == 0) { if (changeUserPassword(userManager, strUsername, strNewPassword)) { EndDialog(IDOK); } } else { if (userManager.login(strUsername, strCurrentPassword)) { if (changeUserPassword(userManager, strUsername, strNewPassword)) { EndDialog(IDOK); } else { userManager.logout(); } } else { AfxMessageBox(_T("当前用户名或密码输入错误。")); } } }