145 lines
4 KiB
C++
145 lines
4 KiB
C++
/*++
|
|
|
|
Module Name:
|
|
|
|
brwsdlg.cpp
|
|
|
|
Abstract:
|
|
|
|
Intermediate dialog class that provides basic NT user account browsing.
|
|
It assumes that the dialog resource contains BOTH a IDC_BROWSE button
|
|
and a IDC_ACCOUNT_NAME edit field. It maintains both of these items.
|
|
|
|
Author:
|
|
|
|
Boyd Multerer boydm
|
|
|
|
--*/
|
|
|
|
#include "stdafx.h"
|
|
#include "certmap.h"
|
|
#include "brwsdlg.h"
|
|
#include "cnfrmpsd.h"
|
|
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CEditOne11MapDlg dialog
|
|
|
|
//---------------------------------------------------------------------------
|
|
CNTBrowsingDialog::CNTBrowsingDialog( UINT nIDTemplate, CWnd* pParentWnd )
|
|
: CDialog( nIDTemplate, pParentWnd )
|
|
{
|
|
//{{AFX_DATA_INIT(CNTBrowsingDialog)
|
|
m_sz_accountname = _T("");
|
|
m_sz_password = _T("");
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void CNTBrowsingDialog::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CNTBrowsingDialog)
|
|
DDX_Control(pDX, IDC_PASSWORD, m_cedit_password);
|
|
DDX_Control(pDX, IDC_NTACCOUNT, m_cedit_accountname);
|
|
DDX_Text(pDX, IDC_NTACCOUNT, m_sz_accountname);
|
|
DDX_Text(pDX, IDC_PASSWORD, m_sz_password);
|
|
//}}AFX_DATA_MAP
|
|
// DDX_Control(pDX, IDC_PASSWORD, m_cedit_password);
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
BEGIN_MESSAGE_MAP(CNTBrowsingDialog, CDialog)
|
|
//{{AFX_MSG_MAP(CNTBrowsingDialog)
|
|
ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
|
|
ON_EN_CHANGE(IDC_PASSWORD, OnChangePassword)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CNTBrowsingDialog message handlers
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
BOOL CNTBrowsingDialog::OnInitDialog()
|
|
{
|
|
m_bPassTyped = FALSE;
|
|
m_szOrigPass = m_sz_password;
|
|
if ( !m_sz_password.IsEmpty() )
|
|
{
|
|
m_sz_password.LoadString( IDS_SHOWN_PASSWORD );
|
|
}
|
|
return CDialog::OnInitDialog();
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
// run the user browser
|
|
void CNTBrowsingDialog::OnBrowse()
|
|
{
|
|
TCHAR * pUser = m_sz_accountname.GetBuffer(MAX_PATH);
|
|
GetIUsrAccount(NULL, this, pUser, MAX_PATH);
|
|
m_sz_accountname.ReleaseBuffer(-1);
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
// make sure that the selected NT acount is, in fact, a valid account
|
|
//
|
|
void CNTBrowsingDialog::OnOK()
|
|
{
|
|
// update the data
|
|
UpdateData( TRUE );
|
|
|
|
// see if the account name is empty
|
|
if ( m_sz_accountname.IsEmpty() )
|
|
{
|
|
AfxMessageBox( IDS_WANTACCOUNT );
|
|
m_cedit_accountname.SetFocus();
|
|
m_cedit_accountname.SetSel(0, -1);
|
|
return;
|
|
}
|
|
|
|
// validate the password
|
|
if ( m_bPassTyped )
|
|
{
|
|
CConfirmPassDlg dlgPass;
|
|
dlgPass.m_szOrigPass = m_sz_password;
|
|
if ( dlgPass.DoModal() != IDOK )
|
|
{
|
|
m_cedit_password.SetFocus();
|
|
m_cedit_password.SetSel(0, -1);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// restore the original password instead of the
|
|
// standard ****** string
|
|
m_sz_password = m_szOrigPass;
|
|
UpdateData( FALSE );
|
|
}
|
|
|
|
|
|
// although it would seem to be a nice thing to do to verify the password and
|
|
// account - it is VERY difficult, if not impossible, to do on a remote machine
|
|
|
|
// it is valid
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
void CNTBrowsingDialog::OnChangePassword()
|
|
{
|
|
// TODO: If this is a RICHEDIT control, the control will not
|
|
// send this notification unless you override the CNTBrowsingDialog::OnInitDialog()
|
|
// function to send the EM_SETEVENTMASK message to the control
|
|
// with the ENM_CHANGE flag ORed into the lParam mask.
|
|
m_bPassTyped = TRUE;
|
|
}
|