Padrões do SISMETRO

Tem objetivo de entendimento de como funciona algumas funcionalidades do SISMETRO

Token do Relatório

Começou por volta do segundo semestre de 2023 a necessidade de envio de relatórios para os clientes e com isso foi necessário criar um padrão para a autenticação via Token nos relatórios.

No caso, os relatórios são encaminhados através de um link para alguns clientes que necessitam o acesso sem precisar logar no SISMETRO.

O padrão

A fim de ser possível trabalhar com os parâmetros, segue a funcionalidade como funciona:

Para esses casos deverá obrigatoriamente o envio de dois parâmetros: Token e P, sendo que o primeiro é o token de autenticação para aquele relatório e o segundo são os parâmetros do relatório. Ambos são necessários visto que o primeiro é gerado a partir do segundo.

O parâmetro P se refere a uma série de informações para a geração do relatório, como por exemplo: id da Unidade, id do Usuário (caso necessite) e outros filtros para a geração do relatório. Ele se trata de um base64 que é gerado da seguinte forma:

  1. Uma variável $array/$object é enviada(o) para o método indicado: 
    Relatorio::generateParams($array)
  2. É aplicado o json_encode para gerar uma string JSON do array ou objeto;
  3. Com isso é criptografado com base64;
  4. Após isso é adicionado um salt pela função:
    Sismetro_Hash::insertSalt
  5. E novamente é criptografado com base64.

Assim é possível ter um parâmetro criptografado com uma criptografia boa seguindo o padrão para definir os filtros e parâmetros para aquele relatório de forma necessária.

Já para o parâmetro Token é utilizado a função abaixo com o fluxo acima, porém, até o terceiro passo (a primeira criptografia base64):

Sismetro_Hash::geraHashSalted

Com isso, tendo ambos os parâmetros é possível validar se o token é válido ou não.

A validação do token

Para validar o token é só encaminhar para a função abaixo o conteúdo do parâmetro p e do token respectivamente:

Relatorio::checkToken($params,$token)

Com isso, será gerado o token sem o salt para os parâmetros e retirado o salt do token para comparação. Se retornar true, tudo certo, senão, retornará false.

SISMASTER - Usuários MASTER com Rastreabilidade

Para configurar a maioria dos parâmetros das unidades são com usuários do tipo "WebMaster", estes criados geralmente sendo um por unidade.

Estes usuários fazem com que todos da empresa possuam a senha e assim fique muito complicado saber quem que fez tal alteração, não tendo uma rastreabilidade correta.

Com isso, depois de muito pensar e analisar criamos o SISMASTER, que se trata de usuários MASTER com vínculo com um usuário PAI.

Para esta documentação usaremos o termo "Usuário(s) PAI" sendo o usuário na Unidade 1 (Master SISMETRO) e "Usuário(s) SISMASTER" como o usuário Master vinculado ao Usuário PAI.

Como funciona?

Em um pequeno resumo, os usuários SISMASTER possuem um vínculo com um usuário da Unidade 1 (Master SISMETRO).

Esse vínculo se dá através do campo "idPAI" na drawussismetro nos usuários SISMASTER, sendo o "idPAI" o ID do Usuário PAI.

Para ser possível a utilização deste usuário é necessário que o usuário PAI possua o direito 712 vinculado ao usuário - o direito não funciona para liberação no grupo, sendo necessário liberar para cada usuário.

Ao tentar efetuar o login com usuário SISMASTER, é identificado pelo prefixo e é efetuada uma solicitação ao API Internal que irá validar se o usuário PAI possui direito para login:

Após isso, o processo de login segue normalmente, apenas existindo essa espécie de "middleware" para esse fim de criar e gerenciar o(s) usuário(s) SISMASTER.

Observação: A autenticação que é utilizado para chamada da função no API Internal é um token da unidade 1 para o usuário 10 (Rotina Automática).

Como efetuar o login com um usuário SISMASTER?

Para efetuar o login com um usuário SISMASTER, é necessário utilizar o prefixo "sismaster." (incluindo o ponto) ao seu Usuário PAI, seguem exemplos possíveis:

A senha a ser utilizada é a mesma utilizada no login do Usuário PAI, sendo então o login efetuado para qualquer unidade utilizando estes dados, quando necessário login como usuário SISMASTER.

IMPORTANTE! O usuário para ser apto a logar como usuário SISMASTER deve possuir o direito 712 no usuário PAI, não sendo válido estar liberado esse direito ao grupo.