diff --git a/Tocsg.Module/UserAuthentification/UserAuthentification.pas b/Tocsg.Module/UserAuthentification/UserAuthentification.pas index 894661aa..f91aa434 100644 --- a/Tocsg.Module/UserAuthentification/UserAuthentification.pas +++ b/Tocsg.Module/UserAuthentification/UserAuthentification.pas @@ -20,6 +20,7 @@ type EditID, EditPW: TEdit; ButtonLogin: TButton; procedure FormCreate(Sender: TObject); + procedure FromClose(Sender: TObject; var Action: TCloseAction); procedure ButtonLoginClick(Sender: TObject); private @@ -47,6 +48,12 @@ begin Self.FormStyle := fsStayOnTop; end; +procedure TAuthForm.FromClose(Sender: TObject; var Action: TCloseAction); +begin + // ÆûÀÌ ´ÝÈú ¶§ ¸Þ¸ð¸®¿¡¼­ ÀÚµ¿À¸·Î Á¦°ÅµÇµµ·Ï ¼³Á¤ + Action := caFree; +end; + function IsValidInput(const AText: string): Boolean; const // ¿µ¹®, ¼ýÀÚ, Ư¼ö¹®ÀÚ¸¸ Çã¿ë @@ -98,10 +105,13 @@ begin Guard(ss, TStringStream.Create(sData, TEncoding.UTF8)); Result := HTTP.Post(sDestIPort + sUrl, ss); except + on E: EIdHTTPProtocolException do + begin + Result := E.ErrorMessage; + end; on E: Exception do begin - //ShowMessage('HTTP Åë½Å ³»ºÎ ¿À·ù: ' + E.Message); - Result := ''; + Result := 'Error: ' + E.Message; end; end; end; @@ -121,7 +131,7 @@ begin // Â÷´Ü ½ÃÀÛ ½Ã°£À¸·ÎºÎÅÍ 5ºÐÀÌ Áö³µ´ÂÁö È®ÀÎ if (CurrentTime - BlockStartTime) < (5 / (24 * 60)) then begin - MessageBox(0,'·Î±×ÀÎ 5ȸ ½ÇÆÐ·Î ÀÎÇØ 5ºÐ°£ ·Î±×ÀÎÀÌ Â÷´ÜµË´Ï´Ù', 'BSOne Login', MB_ICONINFORMATION); + MessageBox(0,'·Î±×ÀÎ 5ȸ ½ÇÆÐ·Î ÀÎÇØ 5ºÐ°£ ·Î±×ÀÎÀÌ Â÷´ÜµË´Ï´Ù', 'BSOne Login', MB_ICONINFORMATION or MB_TOPMOST or MB_SETFOREGROUND); Exit; end else @@ -133,27 +143,27 @@ begin if EditID.Text = '' then begin - MessageBox(0,'ID¸¦ ÀÔ·ÂÇϼ¼¿ä', 'BSOne Login', MB_ICONINFORMATION); + MessageBox(0,'ID¸¦ ÀÔ·ÂÇϼ¼¿ä', 'BSOne Login', MB_ICONINFORMATION or MB_TOPMOST or MB_SETFOREGROUND); EditID.SetFocus; Exit; end; if not IsValidInput(EditID.Text) then begin - MessageBox(0,'ID¿¡´Â ¿µ¹®, ¼ýÀÚ, Ư¼ö±âÈ£¸¦ Á¦¿ÜÇÏ°í µé¾î°¥ ¼ö ¾ø½À´Ï´Ù', 'BSOne Login', MB_ICONINFORMATION); + MessageBox(0,'ID¿¡´Â ¿µ¹®, ¼ýÀÚ, Ư¼ö±âÈ£¸¦ Á¦¿ÜÇÏ°í µé¾î°¥ ¼ö ¾ø½À´Ï´Ù', 'BSOne Login', MB_ICONINFORMATION or MB_TOPMOST or MB_SETFOREGROUND); Exit; end; if EditPW.Text = '' then begin - MessageBox(0,'ÆÐ½º¿öµå¸¦ ÀÔ·ÂÇϼ¼¿ä', 'BSOne Login', MB_ICONINFORMATION); + MessageBox(0,'ÆÐ½º¿öµå¸¦ ÀÔ·ÂÇϼ¼¿ä', 'BSOne Login', MB_ICONINFORMATION or MB_TOPMOST or MB_SETFOREGROUND); EditPW.SetFocus; Exit; end; if not IsValidInput(EditPW.Text) then begin - MessageBox(0,'ÆÐ½º¿öµå¿¡´Â ¿µ¹®, ¼ýÀÚ, Ư¼ö±âÈ£¸¦ Á¦¿ÜÇÏ°í µé¾î°¥ ¼ö ¾ø½À´Ï´Ù', 'BSOne Login', MB_ICONINFORMATION); + MessageBox(0,'ÆÐ½º¿öµå¿¡´Â ¿µ¹®, ¼ýÀÚ, Ư¼ö±âÈ£¸¦ Á¦¿ÜÇÏ°í µé¾î°¥ ¼ö ¾ø½À´Ï´Ù', 'BSOne Login', MB_ICONINFORMATION or MB_TOPMOST or MB_SETFOREGROUND); Exit; end; @@ -167,12 +177,50 @@ begin O.S['agentId'] := sAgentId; sResult := GetPostData(sDestIPort, 'aapi/auth/refresh-token/issue', O.AsJSon); + //showmessage(sResult); if sResult <> '' then begin - if sResult.Contains('error') then + // ÀÏ¹Ý ¿¹¿Ü(Exception) + if sResult.Contains('Error') then begin - //_Trace('Error .. GetRegPerInfoUrl() .. Msg="%s"', [Result]); - ShowMessage('¿¡·¯ 1: '+ sResult); + //_Trace('Error .. GetPostData() .. Msg="%s"', [Result]); + MessageBox(0, LPCWSTR(sResult), 'BSOne Login', MB_ICONINFORMATION or MB_TOPMOST or MB_SETFOREGROUND); + exit; + end + // ÇÁ·ÎÅäÄÝ ¿¹¿Ü(EIdHTTPProtocolException) + else if sResult.Contains('err') then + begin + O := SO(sResult); + sResult := O.S['err']; + MessageBox(0, LPCWSTR('Error: ' + sResult), 'BSOne Login', MB_ICONINFORMATION or MB_TOPMOST or MB_SETFOREGROUND); + + Inc(iFailCount); + + if iFailCount >= 5 then + begin + BlockStartTime := Now; // ÇöÀç ½Ã°£ ±â·Ï + MessageBox(0, 'ÀÎÁõ ½ÇÆÐ 5ȸ ¿¬¼ÓÀ¸·Î 5ºÐ°£ ·Î±×ÀÎÀÌ Â÷´ÜµË´Ï´Ù.', 'BSOne Login', MB_ICONINFORMATION or MB_TOPMOST or MB_SETFOREGROUND); + exit; + end + else + begin + MessageBox(0, PChar(format('¾ÆÀ̵ð ¶Ç´Â ºñ¹Ð¹øÈ£°¡ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù' + sLineBreak + + '(ÇöÀç %dȸ ½ÇÆÐ / 5ȸ ¿¬¼Ó½ÇÆÐ ½Ã Â÷´Ü)', [iFailCount])), 'BSOne Login', MB_ICONINFORMATION or MB_TOPMOST or MB_SETFOREGROUND); + end; + exit; + end + else if sResult.Contains('passwordChange') then + begin + O := SO(sResult); + sResult := O.S['passwordChangeRequired']; + if sResult = 'true' then + begin + var sUrl := O.S['passwordChangeUrl']; + showmessage(sUrl); + sResult := GetPostData(sDestIPort, sUrl, O.AsJSon); + end; + + MessageBox(0, LPCWSTR(sResult), 'BSOne Login', MB_ICONINFORMATION or MB_TOPMOST or MB_SETFOREGROUND); exit; end else @@ -185,24 +233,12 @@ begin end else begin - Inc(iFailCount); - if iFailCount >= 5 then - begin - BlockStartTime := Now; // ÇöÀç ½Ã°£ ±â·Ï - ShowMessage('ÀÎÁõ ½ÇÆÐ 5ȸ ¿¬¼ÓÀ¸·Î 5ºÐ°£ ·Î±×ÀÎÀÌ Â÷´ÜµË´Ï´Ù.'); - exit; - end - else - begin - ShowMessage(Format('¾ÆÀ̵ð ¶Ç´Â ºñ¹Ð¹øÈ£°¡ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù. (ÇöÀç %dȸ ½ÇÆÐ / 5ȸ ¿¬¼Ó½ÇÆÐ ½Ã Â÷´Ü)', [iFailCount])); - end; - exit; end; except on E: Exception do begin - ShowMessage('¿À·ù ¹ß»ý: Fail .. GetRegPerInfoUrl()' + sLineBreak + E.Message); + ShowMessage('¿À·ù ¹ß»ý: Fail .. GetPostData()' + sLineBreak + E.Message); exit; end; end; @@ -240,7 +276,7 @@ begin if Assigned(FOnSuccess) then FOnSuccess(Self, CODE_AUTH_OK); // ¸ÞÀÎ ¼­ºñ½º¿¡ ¾Ë¸² ¹ß¼Û - Close; // ⠴ݱâ + Close; end; end.