282 lines
7.1 KiB
Plaintext
282 lines
7.1 KiB
Plaintext
unit DDeleteCode;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.ImageList,
|
|
Vcl.ImgList, PngImageList, Vcl.Imaging.pngimage, Vcl.ExtCtrls, WindowAnimator,
|
|
Vcl.Buttons;
|
|
|
|
const
|
|
DEF_WIDTH = 397;
|
|
EXT_WIDTH = 237;
|
|
|
|
type
|
|
TDlgDeleteCode = class(TForm)
|
|
Label1: TLabel;
|
|
btnOk: TButton;
|
|
btnCancel: TButton;
|
|
Label2: TLabel;
|
|
edAuthCode1: TEdit;
|
|
edAuthCode2: TEdit;
|
|
edAuthCode3: TEdit;
|
|
edAuthCode4: TEdit;
|
|
edAuthCode5: TEdit;
|
|
edAuthCode6: TEdit;
|
|
edAuthCode7: TEdit;
|
|
edAuthCode8: TEdit;
|
|
lbDelCode: TLabel;
|
|
procedure btnOkClick(Sender: TObject);
|
|
procedure btnCancelClick(Sender: TObject);
|
|
procedure Label2DblClick(Sender: TObject);
|
|
procedure edAuthCode1KeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
procedure edAuthCode8KeyPress(Sender: TObject; var Key: Char);
|
|
private
|
|
{ Private declarations }
|
|
sCode_,
|
|
sAuth_: String;
|
|
nAuthFailCnt_: Integer;
|
|
procedure InitCode(bMakeCode: Boolean = false);
|
|
procedure ClearAuthEdit;
|
|
public
|
|
{ Public declarations }
|
|
Constructor Create(aOwner: TComponent); override;
|
|
procedure CreateParams(var Params: TCreateParams); override; // 작업표시줄에 표시
|
|
end;
|
|
|
|
var
|
|
DlgDeleteCode: TDlgDeleteCode;
|
|
|
|
implementation
|
|
|
|
uses
|
|
ManagerService, System.Math, CrmLogger, Tocsg.Strings, GlobalDefine, Tocsg.DateTime,
|
|
Tocsg.Hash;
|
|
|
|
const
|
|
CODE_KEY = 'BsOneFixedKey';
|
|
|
|
resourcestring
|
|
RS_InputAuth = '인증키를 입력해주십시오.';
|
|
RS_InvalidAuth = '유효하지 않은 인증키 입니다.';
|
|
RS_InputCode = '인증코드를 입력해 주십시오.';
|
|
RS_ErrorLength = '인증코드 길이 오류입니다.';
|
|
RS_Fail3 = '인증을 3회 실패했습니다.';
|
|
RS_CodeClear = '인증 및 코드 생성을 초기화 합니다.';
|
|
RS_InvalidCode = '유효하지 않은 인증코드입니다. (초기화 : %d)';
|
|
|
|
{$R *.dfm}
|
|
|
|
Constructor TDlgDeleteCode.Create(aOwner: TComponent);
|
|
begin
|
|
Inherited Create(aOwner);
|
|
sAuth_ := '';
|
|
nAuthFailCnt_ := 0;
|
|
InitCode;
|
|
end;
|
|
|
|
procedure TDlgDeleteCode.InitCode(bMakeCode: Boolean = false);
|
|
var
|
|
sTemp: String;
|
|
begin
|
|
sCode_ := gMgSvc.AgentModel.DeleteCode;
|
|
if (sCode_ = '') or bMakeCode then
|
|
begin
|
|
gMgSvc.AgentModel.DeleteCode := GetRandomStrEx(8);
|
|
gMgSvc.AgentModel.Save;
|
|
sCode_ := gMgSvc.AgentModel.DeleteCode;
|
|
end;
|
|
ASSERT(sCode_.Length = 8);
|
|
|
|
lbDelCode.Caption := Format('%s %s %s %s %s %s %s %s',
|
|
[sCode_[1], sCode_[2], sCode_[3], sCode_[4], sCode_[5], sCode_[6], sCode_[7], sCode_[8]]);
|
|
|
|
sTemp := ConvStrToSha256A(sCode_ + CODE_KEY + gMgSvc.EmpNo);
|
|
sTemp := ExtrNumStr(sTemp);
|
|
|
|
sAuth_ := Copy(sTemp, sTemp.Length - 3, 4) + Copy(sTemp, 1, 4);
|
|
end;
|
|
|
|
procedure TDlgDeleteCode.Label2DblClick(Sender: TObject);
|
|
var
|
|
ShiftState: TShiftState;
|
|
begin
|
|
ShiftState := KeyDataToShiftState(0);
|
|
if GetKeyState(VK_LMENU) < 0 then
|
|
Include(ShiftState, ssAlt);
|
|
|
|
if (ssShift in ShiftState) and
|
|
(ssAlt in ShiftState) and
|
|
(ssCtrl in ShiftState) then
|
|
begin
|
|
ShowMessage(sAuth_);
|
|
end;
|
|
end;
|
|
|
|
procedure TDlgDeleteCode.ClearAuthEdit;
|
|
begin
|
|
edAuthCode1.Text := '';
|
|
edAuthCode2.Text := '';
|
|
edAuthCode3.Text := '';
|
|
edAuthCode4.Text := '';
|
|
edAuthCode5.Text := '';
|
|
edAuthCode6.Text := '';
|
|
edAuthCode7.Text := '';
|
|
edAuthCode8.Text := '';
|
|
end;
|
|
|
|
procedure TDlgDeleteCode.CreateParams(var Params: TCreateParams);
|
|
begin
|
|
Inherited CreateParams(Params);
|
|
Params.ExStyle := WS_EX_APPWINDOW;
|
|
end;
|
|
|
|
procedure TDlgDeleteCode.edAuthCode1KeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
begin
|
|
if Key = 8 then
|
|
begin
|
|
if (Sender is TEdit) and (TEdit(Sender).Text = '') then
|
|
begin
|
|
if Sender = edAuthCode2 then
|
|
edAuthCode1.SetFocus
|
|
else if Sender = edAuthCode3 then
|
|
edAuthCode2.SetFocus
|
|
else if Sender = edAuthCode4 then
|
|
edAuthCode3.SetFocus
|
|
else if Sender = edAuthCode5 then
|
|
edAuthCode4.SetFocus
|
|
else if Sender = edAuthCode6 then
|
|
edAuthCode5.SetFocus
|
|
else if Sender = edAuthCode7 then
|
|
edAuthCode6.SetFocus
|
|
else if Sender = edAuthCode8 then
|
|
edAuthCode7.SetFocus;
|
|
end;
|
|
end else begin
|
|
if Sender = edAuthCode1 then
|
|
edAuthCode2.SetFocus
|
|
else if Sender = edAuthCode2 then
|
|
edAuthCode3.SetFocus
|
|
else if Sender = edAuthCode3 then
|
|
edAuthCode4.SetFocus
|
|
else if Sender = edAuthCode4 then
|
|
edAuthCode5.SetFocus
|
|
else if Sender = edAuthCode5 then
|
|
edAuthCode6.SetFocus
|
|
else if Sender = edAuthCode6 then
|
|
edAuthCode7.SetFocus
|
|
else if Sender = edAuthCode7 then
|
|
edAuthCode8.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
procedure TDlgDeleteCode.edAuthCode8KeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
if Key = #13 then
|
|
begin
|
|
Key := #0;
|
|
btnOk.Click;
|
|
end;
|
|
end;
|
|
|
|
procedure TDlgDeleteCode.btnCancelClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TDlgDeleteCode.btnOkClick(Sender: TObject);
|
|
var
|
|
sAuth: String;
|
|
ExpFun: TExpFun;
|
|
begin
|
|
if edAuthCode1.Text = '' then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_InputCode), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
edAuthCode1.SetFocus;
|
|
exit;
|
|
end;
|
|
|
|
if edAuthCode2.Text = '' then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_InputCode), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
edAuthCode2.SetFocus;
|
|
exit;
|
|
end;
|
|
|
|
if edAuthCode3.Text = '' then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_InputCode), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
edAuthCode3.SetFocus;
|
|
exit;
|
|
end;
|
|
|
|
if edAuthCode4.Text = '' then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_InputCode), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
edAuthCode4.SetFocus;
|
|
exit;
|
|
end;
|
|
|
|
if edAuthCode5.Text = '' then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_InputCode), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
edAuthCode5.SetFocus;
|
|
exit;
|
|
end;
|
|
|
|
if edAuthCode6.Text = '' then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_InputCode), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
edAuthCode6.SetFocus;
|
|
exit;
|
|
end;
|
|
|
|
if edAuthCode7.Text = '' then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_InputCode), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
edAuthCode7.SetFocus;
|
|
exit;
|
|
end;
|
|
|
|
if edAuthCode8.Text = '' then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_InputCode), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
edAuthCode8.SetFocus;
|
|
exit;
|
|
end;
|
|
|
|
sAuth := edAuthCode1.Text + edAuthCode2.Text + edAuthCode3.Text +
|
|
edAuthCode4.Text + edAuthCode5.Text + edAuthCode6.Text +
|
|
edAuthCode7.Text + edAuthCode8.Text;
|
|
|
|
if sAuth.Length <> 8 then
|
|
begin
|
|
MessageBox(Handle, PChar(RS_ErrorLength), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
exit;
|
|
end;
|
|
|
|
if sAuth <> sAuth_ then
|
|
begin
|
|
if nAuthFailCnt_ = 3 then
|
|
begin
|
|
nAuthFailCnt_ := 0;
|
|
MessageBox(Handle, PChar(RS_Fail3+#13+#10+RS_CodeClear), PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
InitCode(true);
|
|
end else begin
|
|
MessageBox(Handle, PChar(Format(RS_InvalidCode, [3 - nAuthFailCnt_])),
|
|
PChar(Caption), MB_ICONWARNING or MB_OK);
|
|
Inc(nAuthFailCnt_);
|
|
end;
|
|
ClearAuthEdit;
|
|
edAuthCode1.SetFocus;
|
|
exit;
|
|
end;
|
|
|
|
ModalResult := mrOk;
|
|
end;
|
|
|
|
end.
|