uAcessoMapa.pas 9.32 KB
(**
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Copyright 2000, 2001, 2002, 2003, 2004, 2005 Dataprev - Empresa de Tecnologia e Informações da Previdência Social, Brasil

Este arquivo é parte do programa CACIC - Configurador Automático e Coletor de Informações Computacionais

O CACIC é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como
publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença, ou (na sua opinião) qualquer versão.

Este programa é distribuido na esperança que possa ser  util, mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes.

Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", junto com este programa, se não, escreva para a Fundação do Software
Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
---------------------------------------------------------------------------------------------------------------------------------------------------------------
*)

unit uAcessoMapa;

interface

uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  StdCtrls,
  ExtCtrls,
  dialogs;

type
  TfrmAcesso = class(TForm)
    btAcesso: TButton;
    btCancela: TButton;
    pnAcesso: TPanel;
    lbNomeUsuarioAcesso: TLabel;
    edNomeUsuarioAcesso: TEdit;
    lbSenhaAcesso: TLabel;
    edSenhaAcesso: TEdit;
    lbAviso: TLabel;
    pnMessageBox: TPanel;
    lbMensagens: TLabel;
    procedure btAcessoClick(Sender: TObject);
    procedure btCancelaClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure edNomeUsuarioAcessoKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edSenhaAcessoKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormActivate(Sender: TObject);
    function  VerificaVersao : boolean;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmAcesso: TfrmAcesso;

implementation
uses uMainMapa,
     CACIC_Comm;
{$R *.dfm}

procedure TfrmAcesso.btAcessoClick(Sender: TObject);
var strCommResponseAcesso,
    strLocalAux : String;
    boolAlert   : boolean;
begin
  frmMapaCacic.boolAcessoOK := false;
  boolAlert                 := false;

  // Autenticação de Programa e Usuário
  strFieldsAndValuesToRequest :=                               'nm_acesso='           + objCacicCOMM.replaceInvalidHTTPChars( objCacic.enCrypt(edNomeUsuarioAcesso.Text))          + ',';
  strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + 'te_senha='            + objCacicCOMM.replaceInvalidHTTPChars( objCacic.enCrypt(edSenhaAcesso.Text,false))          + ',';
  strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + 'te_operacao='         + 'Autentication';

  strCommResponseAcesso := Comm(objCacic.getWebManagerAddress + objCacic.getWebServicesFolderName + 'mapacacic/acesso', strFieldsAndValuesToRequest,objCacic.getLocalFolderName);
  objCacic.setBoolCipher(not objCacic.isInDebugMode);

  if (strCommResponseAcesso <> '0') then
    Begin
      strLocalAux := trim(objCacic.deCrypt(objCacic.getValueFromTags('ID_USUARIO',strCommResponseAcesso)));
      if (strLocalAux <> '') then
        Begin
          frmMapaCacic.strId_usuario := strLocalAux;
          strLocalAux := '';
          frmMapaCacic.boolAcessoOK := true; // Acesso OK!
        End
      else
        Begin
          strLocalAux := 'Usuário/Senha incorretos ou Usuário sem Acesso Primário/Secundário a este local!';
          boolAlert := true;
        End
    End
  else
    Begin
      strLocalAux := 'Problemas na comunicação!';
      boolAlert := true;      
    End;

  frmMapaCacic.Mensagem(strLocalAux,boolAlert);

  if (frmMapaCacic.boolAcessoOK) then
    Begin
      lbAviso.Caption := 'USUÁRIO AUTENTICADO: "' + trim(objCacic.deCrypt(objCacic.getValueFromTags('NM_USUARIO_COMPLETO',strCommResponseAcesso)))+'"';
      lbAviso.Font.Style := [fsBold];
      lbAviso.Font.Color := clGreen;
      Application.ProcessMessages;
      Sleep(3000);
    End
  else
    lbMensagens.Font.Color := clRed;

  frmMapaCacic.timerMessageShowTime.Enabled := true;

  objCacic.writeDailyLog(strLocalAux);

  Application.ProcessMessages;

  if (frmMapaCacic.boolAcessoOK) then
    Begin
      self.Close
    End
  else
    Begin
      objCacic.writeDebugLog('btAcessoClick: Acesso Não Efetuado! Comandando fechamento.');    
      edNomeUsuarioAcesso.AutoSelect := false;
      edNomeUsuarioAcesso.SetFocus;
    End;
end;

Function TfrmAcesso.VerificaVersao : boolean;
var strCommResponseVerVersao,
    strAUXvv      : String;
begin
  Result := false;

  // Envio dos dados ao DataBase...
  strFieldsAndValuesToRequest :=                               'te_operacao='         + 'CheckVersion' + ',';
  strFieldsAndValuesToRequest := strFieldsAndValuesToRequest + 'MAPACACIC.EXE_HASH='  + objCacic.getFileHash(ParamStr(0));

  strCommResponseVerVersao := Comm(objCacic.getWebManagerAddress + objCacic.getWebServicesFolderName + 'mapacacic/acesso', strFieldsAndValuesToRequest,objCacic.getLocalFolderName);
  objCacic.setBoolCipher(not objCacic.isInDebugMode);

  objCacic.writeDebugLog('VerificaVersao: Analisando retorno...');
  if (strCommResponseVerVersao <> '0') then
    Begin
      objCacic.writeDebugLog('VerificaVersao: Retorno OK');
      strAUXvv := trim(objCacic.getValueFromTags('MAPACACIC.EXE_HASH',strCommResponseVerVersao));
      objCacic.writeDebugLog('VerificaVersao: MAPACACIC.EXE_HASH => ' + strAUXvv);
      if (strAUXvv = '') then
        Result := true
      else
        Begin
           ShowMessage('ATENÇÃO:' + #13#10 +
                       '-------'  + #13#10 + #13#10 +
                       'Encontra-se disponibilizada uma nova versão do MapaCACIC no servidor "' + objCacic.getWebManagerAddress + '"'+ #13#10 + #13#10 + #13#10 +
                       'Párâmetro Local.: "' + objCacic.getFileHash(ParamStr(0)) + '"' + #13#10 +
                       'Parâmetro Remoto: "' + objCacic.getValueFromTags('MAPACACIC.EXE_HASH',strCommResponseVerVersao) + '"' + #13#10 + #13#10 + #13#10 +
                       'Acesse ao servidor e baixe um novo executável através do link "Repositório" da página principal do Sistema CACIC.' + #13#10 + #13#10 + #13#10 +
                       'A execução está sendo finalizada!' + #13#10 + #13#10 + #13#10);
           btCancelaClick(nil);
        End;
    End
  else
    Begin
      objCacic.writeDebugLog('VerificaVersao: Problema de Comunicação!');
      MessageDLG(#13#10#13#10+'ATENÇÃO! Há problema na comunicação com o módulo Gerente WEB.'+#13#10#13#10,mtWarning,[mbOK],0);
    End;
  Application.ProcessMessages;
end;


procedure TfrmAcesso.btCancelaClick(Sender: TObject);
begin
  lbMensagens.Caption := 'Aguarde... Finalizando!';
  Self.Close;  
  Application.ProcessMessages;
end;

procedure TfrmAcesso.FormCreate(Sender: TObject);
begin
  frmMapaCacic.lbMensagens.Caption  := 'Entrada de Dados para Autenticação no Módulo Gerente WEB Cacic';
end;

procedure TfrmAcesso.edNomeUsuarioAcessoKeyUp(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if not (trim(frmAcesso.edNomeUsuarioAcesso.Text) = '') and
     not (trim(frmAcesso.edSenhaAcesso.Text) = '')       then
     frmAcesso.btAcesso.Enabled := true
  else
     frmAcesso.btAcesso.Enabled := false;
end;

procedure TfrmAcesso.edSenhaAcessoKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if not (trim(frmAcesso.edNomeUsuarioAcesso.Text) = '') and
     not (trim(frmAcesso.edSenhaAcesso.Text) = '')       then
     frmAcesso.btAcesso.Enabled := true
  else
     frmAcesso.btAcesso.Enabled := false;
end;

procedure TfrmAcesso.FormActivate(Sender: TObject);
begin
  strFrmAtual := 'Principal';
  lbAviso.Caption := 'Verificando Existência de Nova Versão.';
  frmMapaCacic.Mensagem(lbAviso.Caption);
  if (objCacic.getWebManagerAddress = '') then
    Begin
      frmMapaCacic.Mensagem('Favor verificar a instalação do Cacic.' +#13#10 + 'Não Existe Servidor de Aplicação configurado!',true,3);
      frmMapaCacic.Finalizar(true);
    End;

  if not VerificaVersao then
    frmMapaCacic.Finalizar(false)
  else
    Begin
      lbNomeUsuarioAcesso.Visible := true;
      edNomeUsuarioAcesso.Visible := true;
      lbSenhaAcesso.Visible       := true;
      edSenhaAcesso.Visible       := true;
      lbAviso.Caption             := 'ATENÇÃO: O usuário deve estar cadastrado no Gerente WEB e deve ter acesso PRIMÁRIO ou SECUNDÁRIO a este local';

      frmAcesso.edNomeUsuarioAcesso.SetFocus;
    End;
    
  frmMapaCacic.Mensagem('');
end;

procedure TfrmAcesso.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  IF (key = VK_RETURN) then
    Begin
      if (edNomeUsuarioAcesso.Focused) and (trim(edNomeUsuarioAcesso.Text) <> '') then
        edSenhaAcesso.SetFocus
      else if (edSenhaAcesso.Focused) and (trim(edSenhaAcesso.Text) <> '') then
        btAcessoClick(nil);
    End;
end;

end.