Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Acesso por Token

Essa funcionalidade tem como finalidade permitir o acesso a rotas especificas do sistema sem que o Usuário precise efetuar o login.

Para isso um usuário cadastrado no sistema, precisara de permissão para gerar um token o qual será vinculado a esse usuário; o usuário poderá visualizar as informações sobre seus tokens em seu perfil na plataforma web.

Configurando o ambiente

Para que possamos utilizar o acesso por token, precisamos habilitar a funcionalidade no ambiente, isso pode ser feito seguindo esses passos:

[!WARNING] Um problema comum que pode acontecer é que ao criar as tabelas executando o create DS/DDL, uma restrição do campo ID pode gerar um erro não permitindo geração dos tokens, para resolver, basta executar o create DS/DDL novamente(isto ira remover as restrições desse campo).

1. Parâmetro

Precisamos adicionar o parâmetro "ACESSO_POR_TOKEN" na tabela nfs_core_par_parametros, e configurarmos nesse registro(coluna CONTEUDO) as rotas nas quais iremos permitir que o usuário possa gerar um token de acesso:

1.1 SQL:

INSERT INTO nfs_core_par_parametros (EMPRESA, FILIAL, `LOCAL`, NOME, CONTEUDO, TIPO)
VALUES(9999, 9999, 9999, 'ACESSO_POR_TOKEN', '{}', 1);

1.2 Valor coluna CONTEUDO:

{
  "Minha descrição PowerBI": {
    "route": "/nfs/api/powerbi/v1/"
  },
  "Minha descrição acesso rota WEB": {
    "route": "/custom/panel/Funcionario"
  }
}

1.2.1 Exemplo:

{
  "Tabela: Ultimos 1000 apontamentos pendencia": {
    "route": "/nfs/api/powerbi/v1/t/apontamento_pendencia"
  },
  "EntryPoint: Ultimas 100 pendencias": {
    "route": "/nfs/api/powerbi/v1/aptPendenciaUltimas100"
  },
  "Painel de agendamento técnico": {
    "route": "/custom/panel/Funcionario"
  }
}

[!WARNING] Após essa parte, executar o create DS/DDL para criar as tabelas de acesso por token, pode ser que seja necessario executar esse comando 2 vezes para que na segunda ele remova a restrições do campo ID(o qual pode impedir a criação do token).

2. Permissão para o Usuário

Agora será necessário através do acl, atribuirmos a permissão de acesso por token ao usuário que será responsável por gerar o token. acl.png

Feito isso, o ambiente já estará preparado para trabalhar com token de acesso.

Acesso Web

Aqui veremos como configurar o ambiente para permitir que o usuário acesse alguma pagina especifica do sistema através do token de acesso.

Para isso, iremos utilizar o Painel de Agendamento técnico como exemplo:

1. Configuração do parâmetro:

No parâmetro ACESSO_POR_TOKEN(core_par_parametros), precisamos adicionar a rota para o painel e adicionar um LABEL para ela, isso será feito na coluna CONTEUDO, neste caso irei inserir no formato dos exemplos anteriores:

{
  "Painel de agendamento técnico": {
    "route": "/custom/panel/Funcionario"
  }
}

2. Gerar Token

Após logarmos com o nosso usuário, o qual possui permissão para criação do token de acesso, iremos acessar o perfil onde poderemos gerar o nosso token, uma área "Acesso por token" vai estar disponível na parte inferior da pagina.

Como o nosso usuário não possui tokens ainda, poderemos ver os botões para Gerar o Token e Recarregar a Lista de Tokens respectivamente.

Ao clicarmos no botão "Gerar token de acesso" um modal irá surgir na tela, nele poderemos definir:

  • Quais as Empresas, Filias e Locais esse token irá permitir o acesso;
  • Qual a rota será atribuída ao token;
  • Por quanto tempo o token será valido(de 1 a 365 dias);
  • Caso o usuário seja corporativo, se o token irá permitir o acesso a múltiplas EFLs simultaneamente.

Demonstração gerando token

Conteúdo do e-mail de ativação: email.png

Para validar o token o usuário precisa estar conectado a plataforma web

validated.png

3. Utilizando o Token

Vamos precisar do link de acesso para a rota especifica, para isso vamos acessar novamente o perfil do usuário e lá, poderemos ver que o token validado já esta disponível para uso:

Demonstração acessando web

Pronto! Neste caso utilizei o chrome no modo anonimo pois eu já estava logado com usuário na sessão normal, se um usuário não estiver logado ele poderá acessar a essa rota vinculada ao token sem que o mesmo precise "logar".