Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
160 lines
4.0 KiB
C++
160 lines
4.0 KiB
C++
// ServerToolUserManagementDlg.cpp : 구현 파일
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "ManageSetup.h"
|
|
#include "ServerToolUserManagementDlg.h"
|
|
|
|
#include "UserRegEditDlg.h"
|
|
|
|
#include <UserManage/ToolUserManageTable.h>
|
|
|
|
|
|
const TCHAR* GetLVString( int nLVIndex )
|
|
{
|
|
switch( nLVIndex )
|
|
{
|
|
case CToolUserManager::MASTER: return _T("MASTER");
|
|
case CToolUserManager::GENERAL: return _T("GENERAL");
|
|
case CToolUserManager::MONITORING: return _T("MONITORING");
|
|
|
|
}
|
|
|
|
return _T("UNKNOWN");
|
|
}
|
|
|
|
|
|
|
|
// CServerToolUserManagementDlg 대화 상자
|
|
|
|
CServerToolUserManagementDlg::CServerToolUserManagementDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CServerToolUserManagementDlg::IDD, pParent)
|
|
{
|
|
}
|
|
|
|
void CServerToolUserManagementDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
|
|
DDX_Control(pDX, IDC_USERINFO_LIST, m_ctrlUserInfoList);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CServerToolUserManagementDlg, CDialog)
|
|
ON_WM_SYSCOMMAND()
|
|
ON_WM_PAINT()
|
|
ON_WM_QUERYDRAGICON()
|
|
//}}AFX_MSG_MAP
|
|
|
|
ON_BN_CLICKED(IDC_USER_REG, OnBnClickedUserReg)
|
|
ON_BN_CLICKED(IDC_USER_EDIT, OnBnClickedUserEdit)
|
|
ON_BN_CLICKED(IDC_USER_DEL, OnBnClickedUserDel)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CServerToolUserManagementDlg 메시지 처리기
|
|
|
|
BOOL CServerToolUserManagementDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
m_ctrlUserInfoList.SetExtendedStyle ( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_FLATSB );
|
|
//m_ctrlUserInfoList.SetBkColor ( COLORREF RGB( 255, 190, 125) );
|
|
//m_ctrlUserInfoList.SetTextBkColor ( COLORREF RGB( 255, 190, 125) );
|
|
|
|
m_ctrlUserInfoList.InsertColumn ( 0, _T("ID"), LVCFMT_LEFT, 100 );
|
|
m_ctrlUserInfoList.InsertColumn ( 1, _T("NAME"), LVCFMT_LEFT, 80 );
|
|
m_ctrlUserInfoList.InsertColumn ( 2, _T("IP"), LVCFMT_LEFT, 110 );
|
|
m_ctrlUserInfoList.InsertColumn ( 3, _T("ADMIN LV"), LVCFMT_LEFT, 100 );
|
|
|
|
UserListSet(); // 운영자 정보 DB를 읽어서 리스트에 표시
|
|
return true;
|
|
}
|
|
|
|
|
|
struct SORT_BY_ID
|
|
{
|
|
bool operator () (const ServerManage::UserInfo& lhs, const ServerManage::UserInfo& rhs)
|
|
{
|
|
return std::lexicographical_compare(lhs.szID, lhs.szID + strlen(lhs.szID),
|
|
rhs.szID, rhs.szID + strlen(rhs.szID));
|
|
}
|
|
};
|
|
|
|
bool CServerToolUserManagementDlg::UserListSet()
|
|
{
|
|
// 리스트 컨트롤 클리어
|
|
m_ctrlUserInfoList.DeleteAllItems();
|
|
|
|
CToolUserManager::UserList userList;
|
|
|
|
// DB를 읽어서 리스트 컨트롤에 셋팅
|
|
CToolUserManager::GetInstance().GetUserInfo(userList);
|
|
|
|
userList.sort(SORT_BY_ID());
|
|
|
|
CToolUserManager::UserList::iterator pos = userList.begin();
|
|
CToolUserManager::UserList::iterator end = userList.end();
|
|
|
|
in_addr userIP;
|
|
|
|
int nCount = 0;
|
|
|
|
for(;pos != end; ++pos, ++nCount)
|
|
{
|
|
ServerManage::UserInfo& userInfo = *pos;
|
|
|
|
m_ctrlUserInfoList.InsertItem(nCount, userInfo.szID );
|
|
m_ctrlUserInfoList.SetItemText(nCount, 1, userInfo.szFullName );
|
|
|
|
userIP.S_un.S_addr = userInfo.dwIP;
|
|
m_ctrlUserInfoList.SetItemText(nCount, 2, inet_ntoa(userIP));
|
|
m_ctrlUserInfoList.SetItemText(nCount, 3, GetLVString(userInfo.usAdminLevel));
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void CServerToolUserManagementDlg::OnBnClickedUserReg()
|
|
{
|
|
CUserRegEditDlg RegDlg(0);
|
|
RegDlg.DoModal();
|
|
|
|
UserListSet();
|
|
}
|
|
|
|
void CServerToolUserManagementDlg::OnBnClickedUserEdit()
|
|
{
|
|
int nSelectedIndex = m_ctrlUserInfoList.GetNextItem(-1, LVIS_SELECTED);
|
|
|
|
if(-1 != nSelectedIndex)
|
|
{
|
|
char szID[ServerManage::UserInfo::ID_LEN];
|
|
m_ctrlUserInfoList.GetItemText(nSelectedIndex, 0, szID, ServerManage::UserInfo::ID_LEN);
|
|
|
|
ServerManage::UserInfo userInfo;
|
|
if(CToolUserManager::GetInstance().GetUserInfo(szID, userInfo))
|
|
{
|
|
CUserRegEditDlg EditDlg(&userInfo);
|
|
|
|
EditDlg.DoModal();
|
|
UserListSet();
|
|
}
|
|
}
|
|
}
|
|
|
|
void CServerToolUserManagementDlg::OnBnClickedUserDel()
|
|
{
|
|
int nSelectedIndex = m_ctrlUserInfoList.GetNextItem( -1, LVIS_SELECTED );
|
|
|
|
if( -1 != nSelectedIndex )
|
|
{
|
|
// 계정 삭제시에는 ID만 채워서 보냄
|
|
ServerManage::UserInfo stDelUserInfo;
|
|
|
|
m_ctrlUserInfoList.GetItemText(nSelectedIndex, 0,
|
|
stDelUserInfo.szID, ServerManage::UserInfo::ID_LEN);
|
|
|
|
CToolUserManager::GetInstance().DelUser(stDelUserInfo.szID);
|
|
UserListSet();
|
|
}
|
|
} |