From 552b0d6e5d9f02c5f50e7407f0b274f4b926a043 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期四, 12 六月 2025 09:53:57 +0800
Subject: [PATCH] Merge branch 'clh'
---
SourceCode/Bond/Servo/ChangePasswordDlg.cpp | 123 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 123 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/Servo/ChangePasswordDlg.cpp b/SourceCode/Bond/Servo/ChangePasswordDlg.cpp
new file mode 100644
index 0000000..5a8a9f0
--- /dev/null
+++ b/SourceCode/Bond/Servo/ChangePasswordDlg.cpp
@@ -0,0 +1,123 @@
+锘�// CChangePasswordDlg.cpp: 瀹炵幇鏂囦欢
+//
+
+#include "stdafx.h"
+#include "Servo.h"
+#include "afxdialogex.h"
+#include "ChangePasswordDlg.h"
+#include "UserManager.h"
+#include "SystemLogManager.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;
+ }
+
+ SystemLogManager& logManager = SystemLogManager::getInstance();
+ if (newPassword.Compare(currentPassword) == 0) {
+ EndDialog(IDCANCEL);
+ 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);
+ logManager.log(SystemLogManager::LogType::Info, "淇敼瀵嗙爜鎴愬姛锛�", strUsername);
+ }
+ }
+ else {
+ if (userManager.login(strUsername, strCurrentPassword)) {
+ if (changeUserPassword(userManager, strUsername, strNewPassword)) {
+ EndDialog(IDOK);
+ logManager.log(SystemLogManager::LogType::Info, "淇敼瀵嗙爜鎴愬姛锛�", strUsername);
+ }
+ else {
+ userManager.logout();
+ }
+ }
+ else {
+ AfxMessageBox(_T("褰撳墠鐢ㄦ埛鍚嶆垨瀵嗙爜杈撳叆閿欒銆�"));
+ }
+ }
+}
--
Gitblit v1.9.3