DragonNest/Server/ServiceMonitorEx/Source/ChangePasswordDialog.cpp
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

148 lines
No EOL
3.5 KiB
C++

// ChangePasswordDialog.cpp : 구현 파일입니다.
//
#include "stdafx.h"
#include "ChangePasswordDialog.h"
#include "StringUtil.h"
#include "NetSession.h"
#define DNPRJSAFE // DNPrjSafe.h 제외
#include "DNServerDef.h"
#include "DNServerPacket.h"
// CChangePasswordDialog 대화 상자입니다.
IMPLEMENT_DYNAMIC(CChangePasswordDialog, CDialog)
CChangePasswordDialog::CChangePasswordDialog(CWnd* pParent /*=NULL*/)
: CDialog(CChangePasswordDialog::IDD, pParent)
{
m_pSession = NULL;
}
CChangePasswordDialog::~CChangePasswordDialog()
{
}
void CChangePasswordDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT_PASSWORD, m_Password);
}
BEGIN_MESSAGE_MAP(CChangePasswordDialog, CDialog)
ON_BN_CLICKED(IDCANCEL, &CChangePasswordDialog::OnBnClickedCancel)
ON_BN_CLICKED(IDSUMMIT, &CChangePasswordDialog::OnBnClickedSummit)
END_MESSAGE_MAP()
BOOL CChangePasswordDialog::OnInitDialog()
{
CDialog::OnInitDialog();
CComboBox* pCombox = static_cast<CComboBox*>(GetDlgItem(IDC_COMBO_USERNAME));
if (!pCombox)
return false;
ComboBoxMonitorUser Monitor;
strcpy_s (Monitor.szUserName, "monitor");
Monitor.nSelect = pCombox->GetCount();
Monitor.nMonitorLevel = SERVERMONITOR_LEVEL_MONITOR;
m_MonitorUser.push_back (Monitor);
pCombox->AddString (L"monitor");
ComboBoxMonitorUser Admin;
strcpy_s (Admin.szUserName, "admin");
Admin.nSelect = pCombox->GetCount();
Admin.nMonitorLevel = SERVERMONITOR_LEVEL_ADMIN;
m_MonitorUser.push_back (Admin);
pCombox->AddString (L"admin");
ComboBoxMonitorUser Super;
strcpy_s (Super.szUserName, "super");
Super.nSelect = pCombox->GetCount();
Super.nMonitorLevel = SERVERMONITOR_LEVEL_SUPERADMIN;
m_MonitorUser.push_back (Super);
pCombox->AddString (L"super");
pCombox->SetCurSel(0);
m_Password.SetLimitText(10);
return true;
}
// CChangePasswordDialog 메시지 처리기입니다.
void CChangePasswordDialog::OnBnClickedCancel()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
OnCancel();
}
void CChangePasswordDialog::OnBnClickedSummit()
{
// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
if (!m_pSession || !m_pSession->IsConnect())
{
::AfxMessageBox(_T("Session is not connected !"), MB_ICONINFORMATION);
return;
}
// 권한
if (SERVERMONITOR_LEVEL_SUPERADMIN != m_pSession->GetMonitorLevel())
{
::AfxMessageBox(_T("You have no authority to request"), MB_ICONWARNING);
return;
}
CComboBox* pCombox = static_cast<CComboBox*>(GetDlgItem(IDC_COMBO_USERNAME));
if (!pCombox)
return;
int nSelect = pCombox->GetCurSel ();
TCHAR szPassword[PASSWORDLENMAX+1] = { _T('\0'), };
m_Password.GetWindowText(szPassword, _countof(szPassword));
m_Password.SetWindowText(L"");
int nMonitorLevel = 0;
std::string name;
for (int i=0; i<(int)m_MonitorUser.size(); i++)
{
if (m_MonitorUser[i].nSelect == nSelect)
{
name = m_MonitorUser[i].szUserName;
nMonitorLevel = m_MonitorUser[i].nMonitorLevel;
break;
}
}
std::string password;
ToMultiString (szPassword, password);
if (name.empty() || password.empty() || nMonitorLevel == 0)
{
::AfxMessageBox(_T("Invalid Input"), MB_ICONINFORMATION);
return;
}
TChangePassword TxPacket;
memset (&TxPacket, 0, sizeof(TxPacket));
strncpy_s (TxPacket.szUserName, name.c_str(), NAMELENMAX);
strncpy_s (TxPacket.szPassWord, password.c_str(), PASSWORDLENMAX);
TxPacket.nMonitorLevel = nMonitorLevel;
m_pSession->SendData(MONITOR2MANAGER_CHANGEPASSWORD, 0, reinterpret_cast<CHAR*>(&TxPacket), sizeof(TxPacket));
OnOK();
}
void CChangePasswordDialog::SetSession(CNetSession* pSession)
{
m_pSession = pSession;
}