
Introdução
O ERP Protheus possui uma boa estrutura de controle de acessos e permissões, porém nunca estamos satisfeitos e sempre queremos mais.
Pensando nesse cenário trarei uma sequência de postagens com o objetivo de construirmos juntos uma camada extra de controle de acessos às rotinas padrões, aplicando o conceito de backend utilizando o Advpl com REST e o frontend utilizando a biblioteca javascript ReactJS.
Objetivo
Construir uma customização no ERP Protheus que possibilite controlar o acesso de usuários nas rotinas padrões, permitindo que esse controle seja realizado por rotina e para cada botão disponível nessa rotina.
Toda manutenção dessa processo será realizado através de interface web e integrada com o ERP Protheus através de API REST.
O objetivo dessa ferramenta é didático, utilize por conta e risco.
Funcionalidades
- Permitir acesso nas rotinas configuradas para apenas usuários autorizados.
- Controlar o acesso a nível de botões existentes na rotina.
- Garantir que mesmo o usuário possuindo a rotina no menu, não poderá realizar ações a menos que isso seja previamente autorizado.
Requisitos
- Criação de tabela para controle das permissões
- Utilização de ponto de entrada para validar as permissões
- Utilização da SX5 para controle das rotinas a serem monitoradas
- ReactJS
Criação das tabelas
Iremos criar uma tabela no Protheus para cadastrar os acessos permitidos para os usuários em determinadas rotinas.
Tabela Z20 – Controle de usuários
Essa tabela será responsável por todas as permissões de acessos que o usuário possui.
No GitHub está o compatibilizador que cria a tabela e suas dependências. Abaixo listo os detalhes da tabela:
Campo | Tipo | Tamanho | Decimal | Descrição |
Z20_FILIAL | C | 2 | 0 | Filial |
Z20_CODROT | C | 6 | 0 | Cod Rotina |
Z20_ROTINA | C | 7 | 0 | Rotina |
Z20_ROTDES | C | 30 | 0 | Desc. Rotina |
Z20_IDUSR | C | 6 | 0 | Id Usuario |
Z20_USRNOM | C | 30 | 0 | Nome Usuario |
Z20_SETOR | C | 20 | 0 | Setor |
Z20_NUM1 | C | 1 | 0 | 1 Opcao |
Z20_NUM2 | C | 1 | 0 | 2 Opcao |
Z20_NUM3 | C | 1 | 0 | 3 Opcao |
Z20_NUM4 | C | 1 | 0 | 4 Opcao |
Z20_NUM5 | C | 1 | 0 | 5 Opcao |
Z20_NUM6 | C | 1 | 0 | 6 Opcao |
Z20_NUM7 | C | 1 | 0 | 7 Opcao |
Z20_NUM8 | C | 1 | 0 | 8 Opcao |
Z20_NUM9 | C | 1 | 0 | 9 Opcao |
Z20_NUM10 | C | 1 | 0 | 10 Opcao |
Z20_NUM11 | C | 1 | 0 | 11 Opcao |
Z20_NUM12 | C | 1 | 0 | 12 Opcao |
Z20_NUM13 | C | 1 | 0 | 13 Opcao |
Z20_NUM14 | C | 1 | 0 | 14 Opcao |
Z20_NUM15 | C | 1 | 0 | 15 Opcao |
Z20_USRINC | C | 40 | 0 | Inclusao |
Z20_USRALT | C | 40 | 0 | Alteracao |
Índices:
Ordem | Chave |
1 | Z20_FILIAL + Z20_CODROT + Z20_IDUSR |
2 | Z20_FILIAL + Z20_IDUSR + Z20_CODROT |
3 | Z20_ROTINA + Z20_IDUSR |
Agora com a tabela criada daremos continuidade nesse estudo na próxima postagem.
abraços e até mais!
Créditos
Ernani Forastieri pela ferramenta EXPORDIC que foi utilizada para gerar o compatibilizador das tabelas.
O site do Ernani Forastieri possui várias ferramentas úteis para o dia a dia do analista Protheus. clique aqui para acessá-lo
4 Comments