From 6d5c509d01c03d9652aea7d3579924a7e0aae216 Mon Sep 17 00:00:00 2001 From: ~ Alone <1197284744@qq.com> Date: Sun, 19 May 2024 16:14:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BF=AE=E6=94=B9=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E5=87=BD=E6=95=B0=E4=BB=A5=E5=8F=8A=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aike/LogInDlg.cpp | 135 +++++++++++++++++++++++++++++----------------- aike/LogInDlg.h | 3 +- aike/aike.rc | Bin 18350 -> 19032 bytes aike/aikeDlg.cpp | 76 ++++++++++++++++++++++++-- aike/aikeDlg.h | 5 +- aike/resource.h | 7 ++- 6 files changed, 169 insertions(+), 57 deletions(-) diff --git a/aike/LogInDlg.cpp b/aike/LogInDlg.cpp index b634cdf..dffec9a 100644 --- a/aike/LogInDlg.cpp +++ b/aike/LogInDlg.cpp @@ -28,6 +28,7 @@ BEGIN_MESSAGE_MAP(LogInDlg, MyDialog) // ON_NOTIFY(BCN_HOTITEMCHANGE, IDC_CHECK1, &LogInDlg::OnBnHotItemChangeCheck1) // ON_NOTIFY(NM_THEMECHANGED, IDC_CHECK1, &LogInDlg::OnNMThemeChangedCheck1) ON_BN_CLICKED(IDC_CHECK1, &LogInDlg::OnBnClickedCheck1) + ON_WM_CTLCOLOR() END_MESSAGE_MAP() @@ -38,7 +39,7 @@ BOOL LogInDlg::OnInitDialog() CImage img; img.Load(_T("../aike/res/background.jpg")); //SetBackground(img); - PaintDlg(); + //PaintDlg(); // TODO: 在此添加额外的初始化 //PaintDlg(); FixedSize(); @@ -50,47 +51,103 @@ BOOL LogInDlg::OnInitDialog() rt.MoveToXY(270, 240); AddButton(2, rt); SetLClick(2, [this](int i) {CloseClick(i); }); + if (IsLogin) + { + GetDlgItem(IDC_EDIT3)->ShowWindow(SW_HIDE); + GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE); + GetDlgItem(IDC_EDIT4)->ShowWindow(SW_HIDE); + } + else + { + GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE); + GetDlgItem(IDC_CHECK1)->ShowWindow(SW_HIDE); + GetDlgItem(IDC_STATIC1)->SetWindowText(_T("密 码:")); + GetDlgItem(IDC_STATIC2)->SetWindowText(_T("确认密码:")); + } + return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } VOID LogInDlg::LoginClick(int id) { - CString Name, Pass, tmp; - GetDlgItemText(IDC_EDIT1, Name); - GetDlgItemText(IDC_EDIT2, Pass); - BOOL sys = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck(); - if (!sys) - { - if (Name == _T("")) - { - MessageBox(_T("请输入要登陆的账号"), _T("温馨提示")); - return; - } - } CaikeDlg* dlg = (CaikeDlg*)m_Parent; - switch (dlg->CheckUser(Name, Pass, sys)) + if (IsLogin) { - case 0: - MessageBox(_T("账号不存在"), _T("温馨提示")); - break; - case 1: - if(sys) + CString Name, Pass, tmp; + GetDlgItemText(IDC_EDIT1, Name); + GetDlgItemText(IDC_EDIT2, Pass); + BOOL sys = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck(); + if (!sys) { - dlg->LogName = _T("系统管理员"); + if (Name == _T("")) + { + MessageBox(_T("请输入要登陆的账号"), _T("温馨提示")); + return; + } } else { - dlg->LogName = Name; + Name = _T("系统管理员"); + } + switch (dlg->CheckUser(Name, Pass, 1)) + { + case 0: + MessageBox(_T("账号不存在,或该账号不允许登录电脑端"), _T("温馨提示")); + break; + case 1: + if (sys) + { + dlg->LogName = _T("系统管理员"); + } + else + { + dlg->LogName = Name; + } + dlg->SetLogInInfo(dlg->LogName); + MyDialog::OnOK(); + break; + case 2: + MessageBox(_T("密码输入错误"), _T("温馨提示")); + break; + default: + break; + } + } + else + { + CString Pass, Pass1,Pass2, tmp; + GetDlgItemText(IDC_EDIT2, Pass); + GetDlgItemText(IDC_EDIT3, Pass1); + GetDlgItemText(IDC_EDIT4, Pass2); + if (Pass != Pass1) + { + MessageBox(_T("两次输入的密码不一致"), _T("温馨提示")); + return; + } + if (Pass.GetLength() > 16) + { + MessageBox(_T("密码长度不能超过16位"), _T("温馨提示")); + return; + } + switch (dlg->ChangePass(dlg->LogName, Pass2, Pass)) + { + case 0: + MessageBox(_T("账号不存在"), _T("温馨提示")); + break; + case 1: + MessageBox(_T("密码修改成功"), _T("温馨提示")); + MyDialog::OnOK(); + break; + case 2: + MessageBox(_T("旧密码密码输入错误"), _T("温馨提示")); + break; + case 3: + MessageBox(_T("SQL语句执行错误"), _T("温馨提示")); + break; + default: + break; } - dlg->SetLogInInfo(dlg->LogName); - MyDialog::OnOK(); - break; - case 2: - MessageBox(_T("密码输入错误"), _T("温馨提示")); - break; - default: - break; } } @@ -101,26 +158,6 @@ VOID LogInDlg::CloseClick(int id) } -//void LogInDlg::OnBnHotItemChangeCheck1(NMHDR* pNMHDR, LRESULT* pResult) -//{ - // 此功能要求 Internet Explorer 6 或更高版本。 - // 符号 _WIN32_IE 必须是 >= 0x0600。 -// LPNMBCHOTITEM pHotItem = reinterpret_cast(pNMHDR); - // TODO: 在此添加控件通知处理程序代码 - -// *pResult = 0; -//} - - -//void LogInDlg::OnNMThemeChangedCheck1(NMHDR* pNMHDR, LRESULT* pResult) -//{ - // 该功能要求使用 Windows XP 或更高版本。 - // 符号 _WIN32_WINNT 必须 >= 0x0501。 - // TODO: 在此添加控件通知处理程序代码 -// *pResult = 0; -//} - - void LogInDlg::OnBnClickedCheck1() { GetDlgItem(IDC_EDIT1)->EnableWindow(!((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck()); diff --git a/aike/LogInDlg.h b/aike/LogInDlg.h index 5b06b38..a2ccc54 100644 --- a/aike/LogInDlg.h +++ b/aike/LogInDlg.h @@ -25,8 +25,7 @@ public: virtual BOOL OnInitDialog(); VOID LoginClick(int id); VOID CloseClick(int id); -// afx_msg void OnBnHotItemChangeCheck1(NMHDR* pNMHDR, LRESULT* pResult); -// afx_msg void OnNMThemeChangedCheck1(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnBnClickedCheck1(); virtual void OnOK(); + BOOL IsLogin = TRUE; }; diff --git a/aike/aike.rc b/aike/aike.rc index 1fd25ffb62e3d7b8d1756a289670d3e735167b0e..70d86d191ae831577c2f43aa011f689c5fba5b89 100644 GIT binary patch delta 313 zcmZ42&v;`B^>JQza2MjVS~ ztbiH;G8tloC0HXdMr145@`7A!$pCY=vvTO<3MB(x6S$}`gBj2Vp_9)@DDgZ`RbV(4 ft-t`c6r>GesR`I?#8`SzP_rBexE+~ delta 68 zcmcaHg>hX!?RC43?>W~lNHs(C!bL&0P`&vjDY;m$upGa@ftFi0achY7y(Jc S$%(e2ldbqSY~G~4ObGyj;}Tf_ diff --git a/aike/aikeDlg.cpp b/aike/aikeDlg.cpp index 96bdfcc..f310dfd 100644 --- a/aike/aikeDlg.cpp +++ b/aike/aikeDlg.cpp @@ -162,6 +162,8 @@ void CaikeDlg::OnCommand(UINT id) MyDialog::OnCancel(); break; case IDR_MENU2 + 5: + dlg.IsLogin = FALSE; + dlg.DoModal(); break; default: break; @@ -467,8 +469,14 @@ BOOL CaikeDlg::CheckAuthority(CString Authority) return TRUE; } -INT CaikeDlg::CheckUser(CString Name, CString Pass, BOOL isSystem) +//检查账号密码 +INT CaikeDlg::CheckUser(CString Name, CString Pass, int type) { + BOOL isSystem = FALSE; + if (Name == _T("系统管理员")) + { + isSystem = TRUE; + } CString tmp; _RecordsetPtr m_pRecor; _variant_t var; @@ -476,7 +484,7 @@ INT CaikeDlg::CheckUser(CString Name, CString Pass, BOOL isSystem) { string str = (CStringA)Pass; AES aes; - Pass = (CStringA)(aes.EncryptionAES(str, "aikehotel1998092")).c_str(); + Pass = (CStringA)(aes.EncryptionAES(str, AesKey)).c_str(); } if (isSystem) { @@ -498,7 +506,21 @@ INT CaikeDlg::CheckUser(CString Name, CString Pass, BOOL isSystem) } else { - tmp.Format(_T("select Passwords from staff where JobID = '%s' and Computer = '1'"), Name); + switch (type) + { + case 1: + tmp.Format(_T("select Passwords from staff where JobID = '%s' and Computer = '1'"), Name); + break; + case 2: + tmp.Format(_T("select Passwords from staff where JobID = '%s' and web = '1'"), Name); + break; + case 3: + tmp.Format(_T("select Passwords from staff where JobID = '%s' and mobile = '1'"), Name); + break; + default: + tmp.Format(_T("select Passwords from staff where JobID = '%s'"), Name); + break; + } AdoSql.QuerySql(tmp, m_pRecor); if (!m_pRecor->GetadoEOF()) { @@ -521,6 +543,54 @@ INT CaikeDlg::CheckUser(CString Name, CString Pass, BOOL isSystem) return 0; } +//修改密码 +INT CaikeDlg::ChangePass(CString Name, CString OPass, CString NPass) +{ + BOOL isSystem = FALSE; + if (Name == _T("系统管理员")) + { + isSystem = TRUE; + } + int tmp = CheckUser(Name, OPass, 0); + CString sqlStr; + if (OPass != _T("")) + { + string str = (CStringA)OPass; + AES aes; + OPass = (CStringA)(aes.EncryptionAES(str, AesKey)).c_str(); + } + if (NPass != _T("")) + { + string str = (CStringA)NPass; + AES aes; + NPass = (CStringA)(aes.EncryptionAES(str, AesKey)).c_str(); + } + if (tmp ==1) + { + if (isSystem) + { + sqlStr.Format(_T("if not exists (select 1 from config where vkey = 'passwords')\r\nINSERT INTO config (vkey,value) VALUES ('passwords','%s')\r\nelse\r\nUPDATE config SET value = '%s' WHERE vkey = 'passwords'"), NPass, NPass); + tmp = AdoSql.ImplementSQL(sqlStr); + } + else + { + sqlStr.Format(_T("update staff set Passwords = '%s' where JobID = '%s'"), NPass, Name); + tmp = AdoSql.ImplementSQL(sqlStr); + } + if (tmp != TRUE) + { + return 3; + } + return 1; + } + else + { + return tmp; + } + +} + +//设置登录信息 VOID CaikeDlg::SetLogInInfo(CString info) { CImage img; diff --git a/aike/aikeDlg.h b/aike/aikeDlg.h index 0faa018..9cb2925 100644 --- a/aike/aikeDlg.h +++ b/aike/aikeDlg.h @@ -80,8 +80,9 @@ public: VOID MoveAllWin(); //移动所有窗口和按钮 VOID HideAllBt(BOOL Hide = TRUE); //隐藏所有按钮 BOOL CheckAuthority(CString Authority); //检查权限 - INT CheckUser(CString Name, CString Pass, BOOL isSystem); //检查账号密码 - VOID SetLogInInfo(CString info); + INT CheckUser(CString Name, CString Pass, int type); //检查账号密码 + INT ChangePass(CString Name, CString OPass, CString NPass); //修改密码 + VOID SetLogInInfo(CString info); //设置登录信息 VOID SetUpClick(int id); //设置按钮 VOID HomepageClick(int id); //回到主页 VOID RoomSetUpClick(int id); //点击房间设置 diff --git a/aike/resource.h b/aike/resource.h index 5d5873b..2213260 100644 --- a/aike/resource.h +++ b/aike/resource.h @@ -21,6 +21,11 @@ #define IDC_EDIT1 1002 #define IDC_EDIT2 1003 #define IDC_CHECK1 1004 +#define IDC_STATIC1 1005 +#define IDC_STATIC2 1006 +#define IDC_EDIT3 1007 +#define IDC_EDIT4 1008 +#define IDC_STATIC3 1009 #define ID_32771 32771 #define ID_32772 32772 #define ID_SHOW_MENU 32773 @@ -32,7 +37,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 144 #define _APS_NEXT_COMMAND_VALUE 32775 -#define _APS_NEXT_CONTROL_VALUE 1005 +#define _APS_NEXT_CONTROL_VALUE 1007 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif