windows-nt/Source/XPSP1/NT/admin/wizards/addusrw/prsinfo.cpp
2020-09-26 16:20:57 +08:00

163 lines
3.4 KiB
C++

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
PersonalInfo.cpp : implementation file
CPropertyPage support for User mgmt wizard
File History:
JonY Apr-96 created
--*/
#include "stdafx.h"
#include "Speckle.h"
#include "wizbased.h"
#include "Prsinfo.h"
#include <lmerr.h>
#include <lmaccess.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPersonalInfo dialog
IMPLEMENT_DYNCREATE(CPersonalInfo, CWizBaseDlg)
CPersonalInfo::CPersonalInfo() : CWizBaseDlg(CPersonalInfo::IDD)
{
//{{AFX_DATA_INIT(CPersonalInfo)
m_csDescription = _T("");
m_csFullName = _T("");
m_csUserName = _T("");
//}}AFX_DATA_INIT
}
void CPersonalInfo::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPersonalInfo)
DDX_Text(pDX, IDC_DESCRIPTION, m_csDescription);
DDX_Text(pDX, IDC_FULLNAME, m_csFullName);
DDX_Text(pDX, IDC_USERNAME, m_csUserName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPersonalInfo, CWizBaseDlg)
//{{AFX_MSG_MAP(CPersonalInfo)
ON_WM_SHOWWINDOW()
ON_EN_CHANGE(IDC_USERNAME, OnChangeUsername)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPersonalInfo message handlers
LRESULT CPersonalInfo::OnWizardBack()
{
SetButtonAccess(PSWIZB_NEXT | PSWIZB_BACK);
return CPropertyPage::OnWizardBack();
}
LRESULT CPersonalInfo::OnWizardNext()
{
SetButtonAccess(PSWIZB_NEXT | PSWIZB_BACK);
// eventually this needs to be changed to I_NetNameValidate from private\net\inc\icanon.h from netlib.lib
UpdateData(TRUE);
if (m_csUserName == "")
{
AfxMessageBox(IDS_NO_USERNAME);
GetDlgItem(IDC_USERNAME)->SetFocus();
return -1;
}
if (m_csUserName.GetLength() > 20)
{
AfxMessageBox(IDS_USERNAME_TOOLONG);
GetDlgItem(IDC_USERNAME)->SetFocus();
return -1;
}
if (m_csUserName.FindOneOf(L"\"\\/[];:|=,+*?<>") != -1)
{
AfxMessageBox(IDS_BAD_USERNAME);
GetDlgItem(IDC_USERNAME)->SetFocus();
return -1;
}
CWaitCursor wait;
CSpeckleApp* pApp = (CSpeckleApp*)AfxGetApp();
TCHAR* pServer = pApp->m_csServer.GetBuffer(pApp->m_csServer.GetLength());
pApp->m_csServer.ReleaseBuffer();
TCHAR* pUser = m_csUserName.GetBuffer(m_csUserName.GetLength());
m_csUserName.ReleaseBuffer();
// is username unique?
LPBYTE* pUserInfo = new LPBYTE[256];
NET_API_STATUS nAPI = NetUserGetInfo(pServer,
pUser,
0,
pUserInfo);
delete (pUserInfo);
if (nAPI == NERR_Success)
{
CString csDup;
csDup.Format(IDS_DUPLICATE_NAME, m_csUserName, m_csUserName, pApp->m_csDomain);
AfxMessageBox(csDup);
GetDlgItem(IDC_USERNAME)->SetFocus();
return -1;
}
pApp->m_csDescription = m_csDescription;
pApp->m_csFullName = m_csFullName;
pApp->m_csUserName = m_csUserName;
return CPropertyPage::OnWizardNext();
}
void CPersonalInfo::OnShowWindow(BOOL bShow, UINT nStatus)
{
CWizBaseDlg::OnShowWindow(bShow, nStatus);
CSpeckleApp* pApp = (CSpeckleApp*)AfxGetApp();
if (bShow && pApp->m_bPRSReset)
{
m_csDescription = L"";
m_csFullName = L"";
m_csUserName = L"";
pApp->m_bPRSReset = FALSE;
UpdateData(FALSE);
}
}
void CPersonalInfo::OnChangeUsername()
{
UpdateData(TRUE);
if (m_csUserName.GetLength() > 20)
{
AfxMessageBox(IDS_USERNAME_TOOLONG);
GetDlgItem(IDC_USERNAME)->SetFocus();
}
if (m_csUserName.FindOneOf(L"\"\\/[];:|=,+*?<>") != -1)
{
AfxMessageBox(IDS_BAD_USERNAME);
GetDlgItem(IDC_USERNAME)->SetFocus();
}
}