BSOne.SFC/eCrmHE/Utils/EXE_Bs1OTP/DBs1OtpMain.pas

117 lines
2.6 KiB
Plaintext

unit DBs1OtpMain;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons,
Tocsg.Controls;
type
TDlgBs1OtpMain = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
edEmpNo: TEdit;
edGenCode: TEdit;
edSetCode: TEdit;
edEncBase64: TEdit;
edEncBinHex: TEdit;
btnGetCode: TSpeedButton;
Label6: TLabel;
Label7: TLabel;
edResult1: TEdit;
edResult2: TEdit;
btnGetAuth: TButton;
procedure btnGetCodeClick(Sender: TObject);
procedure btnGetAuthClick(Sender: TObject);
private
{ Private declarations }
MgCtrls_: TManagerInputControlsData;
public
{ Public declarations }
Constructor Create(aOwner: TComponent); override;
Destructor Destroy; override;
end;
var
DlgBs1OtpMain: TDlgBs1OtpMain;
implementation
uses
Tocsg.Path, System.Math, CrmLogger, Tocsg.Strings;
{$R *.dfm}
Constructor TDlgBs1OtpMain.Create(aOwner: TComponent);
begin
Inherited Create(aOwner);
MgCtrls_ := TManagerInputControlsData.Create(CutFileExt(GetRunExePath) + '.ini');
MgCtrls_.RegInputCtrl(edEmpNo);
MgCtrls_.Load;
end;
Destructor TDlgBs1OtpMain.Destroy;
begin
FreeAndNil(MgCtrls_);
Inherited;
end;
procedure TDlgBs1OtpMain.btnGetAuthClick(Sender: TObject);
var
sTemp, sCode: String;
i: Integer;
dtNow: TDateTime;
begin
edEmpNo.Text := Trim(edEmpNo.Text);
if edEmpNo.Text = '' then
begin
MessageBox(Handle, PChar('사번을 입력해 주십시오.'), PChar(Caption), MB_ICONWARNING or MB_OK);
edEmpNo.SetFocus;
exit;
end;
MgCtrls_.Save;
sCode := Trim(edGenCode.Text);
if sCode = '' then
begin
MessageBox(Handle, PChar('코드를 생성해 주십시오.'), PChar(Caption), MB_ICONWARNING or MB_OK);
edGenCode.SetFocus;
exit;
end;
dtNow := Now;
sTemp := FormatDateTime('yy', dtNow);
sTemp := sTemp[Length(sTemp)];
sTemp := sTemp + FormatDateTime('mmdd', dtNow);
sCode := sCode + sTemp + sTemp;
edSetCode.Text := sCode;
edEncBase64.Text := EncryptStrToBase64(edSetCode.Text, edEmpNo.Text);
edEncBinHex.Text := EncryptStrToBinStr(edSetCode.Text, edEmpNo.Text);
edResult1.Text := Copy(edEncBinHex.Text, 1, 6);
sCode := ExtrNumStr(edEncBinHex.Text);
if sCode.Length > 6 then
SetLength(sCode, 6);
edResult2.Text := sCode;
end;
procedure TDlgBs1OtpMain.btnGetCodeClick(Sender: TObject);
var
sCode: String;
i: Integer;
begin
Randomize;
for i := 0 to 5 do
sCode := sCode + IntToStr(RandomRange(0, 10));
edGenCode.Text := sCode;
end;
end.