Árvore de páginas

Objetivo


O objetivo da funcionalidade é garantir um segundo nível de acesso a determinadas telas.

Matriz de Evolução

Versão / Release

Funcionalidade

12.1.12
  • Inclusão da possibilidade de alterar o tipo de login (Interno/Externo) a ser realizado.
12.1.14
  • Melhorias na interface de login para que a mesma seja apresentada de uma maneira mais intuitiva aos usuários.
12.1.16
  • Modificações na interface para sugerir o login do usuário (Interno ou Externo) de acordo com Usuário informado.
12.1.19
  • Melhorias na sugestão de acordo com o login informado (Interno, Externo ou Ambos).
12.1.24
  • Validação de segurança da empresa corrente
12.1.31
  • Criação do btb910zx, que recebe como parâmetro a lista de usuários numa TEMP-TABLE.

 

Índice

Visão geral


O programa consiste na confirmação da senha do usuário logado ou requisição de um novo login (usuário e senha) independentemente de seu "Tipo Acesso" (Interno ou Externo), para que seja aberta a tela com a segurança do Login Intermediário aplicada.

Configuração


As regras de login dependem do Tipo Acesso relacionado ao usuário a ser validado, sendo considerado a autenticação via Active Directory (AD) para usuários do tipo "Externo" e as mesmas regras configuradas em Segurança avançada (propriedades-seguranca) para usuários do tipo "Interno". Mais informações quanto a parametrização de segurança para usuários do tipo Interno, estão disponíveis em: Segurança avançada.

A interface do Login Intermediário será modificada de acordo com o campo "Usuário" (que pode ser sugerido na apresentação da tela) e a lista de códigos dos usuários que possuem permissão para se autenticar. Esta tela também pode ser alterada dinamicamente ao sair do campo Usuário, no qual o sistema irá localizar se o código inserido possui um usuário relacionado do tipo 'Interno', 'Externo' ou se existe um código de usuário cadastrado em ambos os caso.

Validação de segurança da empresa corrente

  • O login intermediário não permite autenticar usuários que não tenham relacionamento com empresa corrente.
    • Será exibida uma mensagem de erro com o código 56374, para o usuário sem o relacionamento com a empresa:
      • Texto: O usuário (Código do usuário) não possui relacionamento com a empresa (Código da empresa e nome abreviado)!

      • Ajuda: Certifique-se de que a empresa (Código da empresa e nome abreviado) esteja associada ao usuário (Código do usuário) , no programa Manutenção de Usuário na pasta Empresa.


Exemplos


/*--- Solicita usuário e senha ---*/
RUN btb/btb910zc.p (INPUT c-user-list,INPUT YES, INPUT c-seg-usuario, OUTPUT c-usuario).
 
/*--- Trecho de código dos parâmetros recebidos 'btb910zc.p' ---*/
DEFINE INPUT PARAM p_des_lista_usuar 	AS CHARACTER FORMAT "x(08)" NO-UNDO.
DEFINE INPUT PARAM p_log_confir 		AS LOGICAL FORMAT "Sim/Não" NO-UNDO.
DEFINE INPUT PARAM p_cod_usuario_def 	AS CHARACTER FORMAT "x(12)" NO-UNDO.
DEFINE OUTPUT PARAM p_cod_usuario_aut 	AS CHARACTER FORMAT "x(12)" NO-UNDO.
/*--- Solicita usuário e senha ---*/
RUN btb/btb910zx.p (INPUT TABLE tt-user-list, INPUT YES, INPUT c-seg-usuario, OUTPUT c-usuario).
 
/*--- Trecho de código dos parâmetros recebidos 'btb910zx.p' ---*/
DEFINE TEMP-TABLE tt_des_lista_usuar NO-UNDO FIELD cod_usuario AS CHARACTER.

DEFINE INPUT  PARAMETER TABLE FOR tt_des_lista_usuar.
DEFINE INPUT  PARAMETER p_log_confir        AS LOGICAL   FORMAT "Sim/Não" NO-UNDO. 
DEFINE INPUT  PARAMETER p_cod_usuario_def   AS CHARACTER FORMAT "x(12)"   NO-UNDO.
DEFINE OUTPUT PARAMETER p_cod_usuario_aut   AS CHARACTER FORMAT "x(12)"   NO-UNDO.

Descrição dos parâmetros

  1. Lista com o código de usuários que tem permissão para se autenticar no login intermediário.
  2. Indica se a tela de login é exibida ou realiza uma autenticação sem exibir a tela.
    1. Autenticação sem tela: 
      1. Somente verifica se usuário informado no parâmetro c-seg-usuario existe na lista de usuários c-user-list. Desconsidera a utilização de senha e também regras de segurança configuradas em Parâmetros de Segurança Avançada;
      2. Caso não encontre o usuário na lista, é exibida a tela para autenticação.
  3. Código do usuário para autenticação.
  4. Retorno do usuário autenticado.

Situações e comportamentos de tela

A seguir, serão apresentadas situações de como a tela inicial do Login Intermediário é apresentada de acordo com o usuário e os parâmetros de sua lista. É importante ressaltar que ao "sair" do campo Usuário (quando habilitado para edição), a tela pode ser modificada dinamicamente conforme o tipo do usuário localizado (Interno e Externo).


Situação 1: Enviar apenas um usuário na lista de usuários, sendo igual ao código do usuário que será autenticado.

DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.
RUN btb/btb910zc.p (INPUT "super", INPUT YES, INPUT "super", OUTPUT c-usuario).
 
/*--- Tratamento do retorno ---*/
...
DEFINE TEMP-TABLE tt-user-list NO-UNDO FIELD cod_usuario AS CHARACTER.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.

CREATE tt-user-list.
ASSIGN tt-user-list.cod_usuario = "super".

RUN btb/btb910zx.p (INPUT TABLE tt-user-list, INPUT YES, INPUT "super", OUTPUT c-usuario).
 
/*--- Tratamento do retorno ---*/
...

Código do usuário bloqueado para edição, habilita somente a confirmação da senha.


Situação 2: Enviar apenas um usuário na lista de usuários, sendo diferente ao código do usuário que será autenticado.

DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.
RUN btb/btb910zc.p (INPUT "super1", INPUT YES, INPUT "super", OUTPUT c-usuario).
 
/*--- Tratamento do retorno ---*/
...
DEFINE TEMP-TABLE tt-user-list NO-UNDO FIELD cod_usuario AS CHARACTER.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.

CREATE tt-user-list.
ASSIGN tt-user-list.cod_usuario = "super1".

RUN btb/btb910zx.p (INPUT TABLE tt-user-list, INPUT YES, INPUT "super", OUTPUT c-usuario).
 
/*--- Tratamento do retorno ---*/
...


O usuário de autenticação 'super' não pertence a lista de usuários permitidos 'super1'.

A tela não sugere informações e todos os campos são habilitados para edição.


Situação 3: Enviar uma lista de usuários e o usuário logado na sessão (login realizado com usuário super).

DEFINE VARIABLE c-user-list AS CHAR NO-UNDO.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.
DEFINE NEW GLOBAL SHARED VARIABLE c-seg-usuario AS CHAR FORMAT "x(12)" NO-UNDO.
FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK:
	ASSIGN c-user-list = c-user-list + usuar_mestre.cod_usuario + ",".
END.
RUN btb/btb910zc.p (INPUT c-user-list, INPUT YES, INPUT c-seg-usuario, OUTPUT c-usuario).
 
/*--- Tratamento do retorno ---*/
...
DEFINE TEMP-TABLE tt-user-list NO-UNDO FIELD cod_usuario AS CHARACTER.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.
DEFINE NEW GLOBAL SHARED VARIABLE c-seg-usuario AS CHAR FORMAT "x(12)" NO-UNDO.

FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK:
	CREATE tt-user-list.
	ASSIGN tt-user-list.cod_usuario = usuar_mestre.cod_usuario.
END.

RUN btb/btb910zx.p (INPUT TABLE tt-user-list, INPUT YES, INPUT c-seg-usuario, OUTPUT c-usuario).
 
/*--- Tratamento do retorno ---*/
...

A tela é aberta com a sugestão do usuário com o campo Usuário habilitado para edição.

Como se trata do usuário com o tipo Interno, o campo 'Utilizar domínio' é desabilitado.


Situação 4: Enviar uma lista de usuários e um usuário inexistente na usuar_mestre (Cadastro de Usuários).

DEFINE VARIABLE c-user-list AS CHAR NO-UNDO.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.
FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK:
	ASSIGN c-user-list = c-user-list + usuar_mestre.cod_usuario + ",".
END.
RUN btb/btb910zc.p (INPUT c-user-list, INPUT YES, INPUT "usuario_inexistente", OUTPUT c-usuario).


/*--- Tratamento do retorno ---*/
...
DEFINE TEMP-TABLE tt-user-list NO-UNDO FIELD cod_usuario AS CHARACTER.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.

FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK:
	CREATE tt-user-list.
	ASSIGN tt-user-list.cod_usuario = usuar_mestre.cod_usuario.
END.

RUN btb/btb910zx.p (INPUT TABLE tt-user-list, INPUT YES, INPUT "usuario_inexistente", OUTPUT c-usuario).

/*--- Tratamento do retorno ---*/
...

O código "usuario_inexistente" não pertence a lista de usuários.

A tela não sugere informações e todos os campos são habilitados para edição.


Situação 5: Enviar a lista e usuário diferentes do logado na sessão (efetuado o login com um usuário do tipo Externo).

DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.
RUN btb/btb910zc.p (INPUT "super", INPUT YES, INPUT "super", OUTPUT c-usuario).

/*--- Tratamento do retorno ---*/
...
DEFINE TEMP-TABLE tt-user-list NO-UNDO FIELD cod_usuario AS CHARACTER.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.

CREATE tt-user-list.
ASSIGN tt-user-list.cod_usuario = "super".

RUN btb/btb910zx.p (INPUT TABLE tt-user-list, INPUT YES, INPUT "super", OUTPUT c-usuario).

/*--- Tratamento do retorno ---*/
...

Apesar de enviar o mesmo código pertencente a lista de autenticação, quando o login é efetuado com usuário do tipo Externo, este se torna prioridade na sugestão.

A tela não sugere informações e todos os campos são habilitados para edição.


Situação 6: Enviar apenas um usuário na lista de usuários (código do ERP) sendo igual ao código do usuário da sessão (efetuado o login com um usuário do tipo Externo).

DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.
RUN btb/btb910zc.p (INPUT "c.interno", INPUT YES, INPUT "c.interno", OUTPUT c-usuario).

/*--- Tratamento do retorno ---*/
...
DEFINE TEMP-TABLE tt-user-list NO-UNDO FIELD cod_usuario AS CHARACTER.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.

CREATE tt-user-list.
ASSIGN tt-user-list.cod_usuario = "c.interno".

RUN btb/btb910zx.p (INPUT TABLE tt-user-list, INPUT YES, INPUT "c.interno", OUTPUT c-usuario).

/*--- Tratamento do retorno ---*/
...

Aparecerá o login do usuário Externo, somente autorizado para a confirmação da senha.

O campo Usuário, Utilizar domínio e Domínio são bloqueados para edição.


Situação 7: Enviar a lista de usuários (que possui o usuário logado na sessão) e o código do usuário para autenticação diferente do logado (efetuado o login com um usuário do tipo Externo).

DEFINE VARIABLE c-user-list AS CHAR NO-UNDO.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.
FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK:
	ASSIGN c-user-list = c-user-list + usuar_mestre.cod_usuario + ",".
END.
RUN btb/btb910zc.p (INPUT c-user-list, INPUT YES, INPUT "super", OUTPUT c-usuario).

/*--- Tratamento do retorno ---*/
...
DEFINE TEMP-TABLE tt-user-list NO-UNDO FIELD cod_usuario AS CHARACTER.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.

FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK:
	CREATE tt-user-list.
	ASSIGN tt-user-list.cod_usuario = usuar_mestre.cod_usuario.
END.

RUN btb/btb910zx.p (INPUT TABLE tt-user-list, INPUT YES, INPUT "super", OUTPUT c-usuario).

/*--- Tratamento do retorno ---*/
...

O código do usuário para autenticação enviado ("super") é ignorado, pois o usuário da sessão é prioridade na sugestão dos campos e o mesmo pertence a lista.

É sugerido o usuário logado na sessão, porém todos os campos estão habilitados para edição caso necessite trocar a autenticação do usuário.


Situação 8: Enviar lista de usuários e um código para autenticação que possua simultaneamente registros de usuários do Tipo Interno e Externo válidos.

DEFINE VARIABLE c-user-list AS CHAR NO-UNDO.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.
FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK:
	ASSIGN c-user-list = c-user-list + usuar_mestre.cod_usuario + ",".
END.
RUN btb/btb910zc.p (INPUT c-user-list, INPUT YES, INPUT "c.int.ext", OUTPUT c-usuario).

/*--- Tratamento do retorno ---*/
...
DEFINE TEMP-TABLE tt-user-list NO-UNDO FIELD cod_usuario AS CHARACTER.
DEFINE VARIABLE c-usuario AS CHAR NO-UNDO.

FOR EACH usuar_mestre FIELDS (usuar_mestre.cod_usuario) NO-LOCK:
	CREATE tt-user-list.
	ASSIGN tt-user-list.cod_usuario = usuar_mestre.cod_usuario.
END.

RUN btb/btb910zx.p (INPUT TABLE tt-user-list, INPUT YES, INPUT "c.int.ext", OUTPUT c-usuario).

/*--- Tratamento do retorno ---*/
...

Usuário cadastrado com o código "c.int.ext" com uma data válida para o acesso ao produto.


Usuário cadastrado com o login Externo como "c.int.ext", idêntico ao usuário Interno citado anteriormente.


É sugerido o Usuário que poderá ser tanto o código do login Interno quanto o login Externo.

Como o sistema 'encontrou' dois usuários válidos de diferentes tipos (Interno e Externo) o campo Utilizar domínio é habilitado para edição.

Caso o login seja referente ao usuário Interno, é necessário desconsiderar o campo domínio.


Caso o usuário desejado seja do tipo Externo, basta clicar na opção Utilizar domínio.

A lista é carregada automaticamente de acordo com o cadastro do usuário.