📄 lozinkadlg.cpp
字号:
// LozinkaDlg.cpp : implementation file
//
#include "stdafx.h"
#include "LozinkaDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLozinkaDlg dialog
CLozinkaDlg::CLozinkaDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLozinkaDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLozinkaDlg)
m_StaraLozinka = _T("");
m_NovaLozinka1 = _T("");
m_NovaLozinka2 = _T("");
//}}AFX_DATA_INIT
// Postavi 'default' parametre
PostaviParametre( KT_IZMENA_LOZINKE, "Lozinka" );
// Default vrednosti izlaznih paramtera
bLozinkaUspesnoUneta = false;
}
void CLozinkaDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLozinkaDlg)
DDX_Text(pDX, IDC_STARA_LOZINKA, m_StaraLozinka);
DDV_MaxChars(pDX, m_StaraLozinka, 20);
DDX_Text(pDX, IDC_NOVA_LOZINKA1, m_NovaLozinka1);
DDV_MaxChars(pDX, m_NovaLozinka1, 20);
DDX_Text(pDX, IDC_NOVA_LOZINKA2, m_NovaLozinka2);
DDV_MaxChars(pDX, m_NovaLozinka2, 20);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLozinkaDlg, CDialog)
//{{AFX_MSG_MAP(CLozinkaDlg)
ON_BN_CLICKED(IDOK, OnSnimiNaTerminal)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLozinkaDlg message handlers
// Funkcija za setovanje parametara dijaloga
void CLozinkaDlg::PostaviParametre( EIDKomande ID, CString naslov ){
IDkomande = ID;
NaslovDijaloga = naslov;
}
// Vraca true ako je unos lozinke bio uspesan
bool CLozinkaDlg::LozinkaUspesnoUneta( void ){
return bLozinkaUspesnoUneta;
}
void CLozinkaDlg::OnCancel()
{
CDialog::OnCancel();
}
void CLozinkaDlg::OnSnimiNaTerminal()
{
// Preuzmi podatke iz forme u odgovarajuce promenljive
this->UpdateData();
// Proveri da li su lozinke ispravno unete
string cPoruka;
if ( !ProveriLozinke( string(m_StaraLozinka),
string(m_NovaLozinka1), string(m_NovaLozinka2),
cPoruka ) ){
AfxMessageBox( cPoruka.data() );
GotoDlgCtrl( GetDlgItem( IDC_NOVA_LOZINKA1 ) );
return;
}
CRucniTerminalApp* pRTApp = ( CRucniTerminalApp* ) AfxGetApp();
pRTApp->PrikaziPorukuIKursorZaCekanje( IDS_SNIMANJE_PODATAKA, this );
bLozinkaUspesnoUneta = false;
if ( KSpisakKomandi::Instance()->PostojiKomanda( IDkomande ) ) {
// Snimi lozinku na terminal i prikazi poruku o ishodu.
bLozinkaUspesnoUneta = SnimiLozinku( string(m_StaraLozinka), string(m_NovaLozinka1),
KVazeciID::Instance()->DajAppID(), EIDKomande( IDkomande ) );
}
pRTApp->UkloniPorukuIKursorZaCekanje();
if ( bLozinkaUspesnoUneta )
pRTApp->MyMessageBox( IDS_SNIMANJE_USPELO );
else
pRTApp->MyMessageBox( IDS_SNIMANJE_NEUSPELO );
}
// Funkcija proverava ispravnost unetih lozinki
bool CLozinkaDlg::ProveriLozinke( string cStaraLozinka, string cNovaLozinka1, string cNovaLozinka2,
string& cPoruka )
{
unsigned int nDuzinaLozinkeMin = DUZINA_LOZINKE_MIN;
// Proveri da li je lozinka kraca od najmanje dozvoljene duzine
if ( cNovaLozinka1.length() < nDuzinaLozinkeMin ){
char buffer[100];
cPoruka = "Lozinka mora da ima bar ";
cPoruka += itoa( nDuzinaLozinkeMin, buffer, 10 );
if ( nDuzinaLozinkeMin < 5 )
cPoruka += " znaka !";
else
cPoruka += " znakova !";
return false;
}
// Proveri da li je unet neki znak van dozvoljenog skupa znakova
// ( slova engleske abecede i cifre )
bool bOK = false;
if ( bOK = KInterpret::Instance()->ProveriSkupZnakovaLozinke( cStaraLozinka ) )
if ( bOK = KInterpret::Instance()->ProveriSkupZnakovaLozinke( cNovaLozinka1 ) )
bOK = KInterpret::Instance()->ProveriSkupZnakovaLozinke( cNovaLozinka2 );
if ( ! bOK ) {
cPoruka = "Dozvoljena su samo slova engleske abecede i cifre !";
return false;
}
// Proveri da li je nova lozinka ispravno uneta drugi put
if ( cNovaLozinka1.compare( cNovaLozinka2 ) != 0 ) {
cPoruka = "Nova lozinka nije ista u oba polja !";
return false;
}
// Proveri da li se nova lozinka razlikuje od stare
if ( cNovaLozinka1.compare( cStaraLozinka ) == 0 ) {
cPoruka = "Nova lozinka mora da se razlikuje od stare !";
return false;
}
return true;
}
// Pokusa da snimi lozinku na terminal i prikaze poruku da li je operacija uspela ili ne.
bool CLozinkaDlg::SnimiLozinku( string cStaraLozinka, string cNovaLozinka, KString cAppID,
EIDKomande ID ){
bool bUspelo = false;
// Najpre pripremi podatke za slanje :
// - lozinke
string cLozinke = KInterpret::Instance()->PripremiLozinkuZaSlanje( cStaraLozinka );
cLozinke += KInterpret::Instance()->PripremiLozinkuZaSlanje( cNovaLozinka );
// - ID
cAppID.rpad( 0, BROJ_BAJTOVA_ZA_PCAPP_ID );
KAdminInfo admInf;
KKomunikator::Instance()->DajAdminInfoTerminala( admInf, false );
bool PodrzanPCAppID = KKomunikator::Instance()->
PodrzanPCAppID( admInf.nVerzija, admInf.nPodverzija );
// Snimi na terminal
bUspelo = KKomunikator::Instance()->SnimiLozinkuNaTerminal( ID, cLozinke,
PodrzanPCAppID, cAppID.cString );
return bUspelo;
}
BOOL CLozinkaDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
SetWindowText( NaslovDijaloga );
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -