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:
- Uma variável $array/$object é enviada(o) para o método indicado:
Relatorio::generateParams($array)
- É aplicado o json_encode para gerar uma string JSON do array ou objeto;
- Com isso é criptografado com base64;
- Após isso é adicionado um salt pela função:
Sismetro_Hash::insertSalt - 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):
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:
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:
- Caso possua o direito: É verificado se o usuário PAI possui um usuário SISMASTER na unidade, caso não possua, efetua a criação com os campos básicos e vincula ele com o usuário PAI. Caso já possua usuário, ele apenas atualiza o nome e senha do usuário SISMASTER. Para ambos os casos, ele faz uma série de validações e liberações:
- Valida se possui todas as filiais liberadas, liberando as que ainda não possua liberação. Todas elas com liberação de todos os solicitantes;
- Valida se possui liberação à todas as categorias, efetuando a liberação caso contrário;
- Valida e libera os direitos:
- 343 e 622, referente aos Listeners;
- 634, 647 e 651, referente ao SISMETRO IoT;
- 405, referente à aprovação de Cotação.
- Valida e libera todas as Dashboards da unidade como administrador (não como criador).
- Caso não possua o direito: Verifica-se se o usuário possui usuários SISMASTER e desativa todos eles.
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:
- joao: sismaster.joao
- erick: sismaster.erick
- alex: sismaster.alex
- bruno.eduardo: sismaster.bruno.eduardo
- etc.
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.