Guia de Implantacao - MPSWCOMP
Restricao de Compartilhamento de Senhas - TOTVS Protheus
Visao Geral
| Item | Detalhe |
|---|---|
| Ponto de entrada | AfterLogin (U_MPSWCOMP) |
| Rotina de suporte | U_ZACADMIN — cadastro manual e consulta de auditoria |
| Tabelas | ZAAG01 (maquinas) / ZABG01 (auditoria) |
| Banco | Oracle (via TopConnect) |
| Arquivos | MPSWCOMP.PRW / AFTERLOGIN.PRW |
Estrutura das Tabelas
ZAAG01 — Maquinas Cadastradas
| Campo | Tipo | Tam | Descricao |
|---|---|---|---|
| ZAA_FILIAL | Char | 2 | Filial da empresa |
| ZAA_USER | Char | 15 | ID do usuario (__cUserId) |
| ZAA_HOST | Char | 60 | Hostname da maquina (em maiusculas) |
| ZAA_SO | Char | 40 | Sistema operacional detectado |
| ZAA_TIPO | Char | 1 | P=Principal / S=Secundaria / M=Movel |
| ZAA_DTCAD | Data | 8 | Data de registro |
| ZAA_HRCAD | Char | 8 | Hora de registro (HH:MM:SS) |
| ZAA_ATIVO | Char | 1 | S=Ativo / N=Inativo |
Indice unico: ZAA_FILIAL + ZAA_USER + ZAA_HOST
ZABG01 — Auditoria de Acessos
| Campo | Tipo | Tam | Descricao |
|---|---|---|---|
| ZAB_FILIAL | Char | 2 | Filial da empresa |
| ZAB_USER | Char | 15 | ID do usuario |
| ZAB_HOST | Char | 60 | Hostname da maquina |
| ZAB_SO | Char | 40 | Sistema operacional |
| ZAB_TIPO | Char | 1 | Tipo do dispositivo (P / S / M) |
| ZAB_DATA | Data | 8 | Data do evento |
| ZAB_HORA | Char | 8 | Hora do evento |
| ZAB_STATUS | Char | 1 | L=Liberado / B=Bloqueado / C=Cadastro |
| ZAB_MSG | Char | 200 | Descricao do evento |
Indice: ZAB_FILIAL + ZAB_USER + ZAB_DATA + ZAB_HORA
Fluxo de Decisao
Login do usuario
|
v
[Maquina registrada na ZAA?]
| |
SIM NAO
| |
v v
Libera [Primeiro acesso?]
Acesso | |
Grava ZAB SIM NAO
(status=L) | |
v v
Dialog: Dialog: P/S/M
"Maquina ou Bloquear
Principal?"
| | | |
SIM NAO P/S/M Bloquear
| | | |
v v v v
Grava Bloquea Grava Bloqueia
ZAA(P) ZAB ZAA(tipo) ZAB
ZAB(C) (B) ZAB(C) (B)
Libera LogOff Libera LogOff
Passo a Passo de Implantacao
Etapa 1 — Compilar os fontes
- Abrir o IDE TOTVS (ou usar o compilador via linha de comando)
- Compilar
AFTERLOGIN.PRWprimeiro - Compilar
MPSWCOMP.PRW - Verificar que nao ha erros de compilacao no log
- Verificar compilação no inspetor de objetos
Etapa 2 — Criação do dicinário de dados
- Apendar os arquivos
six0101.sdb,sx20101.sdbesx30101.sdbem todas as empresas AG e SK (incluindo não produtivas)
Etapa 3 — Verificar o Ponto de Entrada
O Protheus chama automaticamente U_AFTERLOGIN apos o login. Para confirmar:
- Logar com um usuario (nao ADMIN)
- A dialog de primeiro acesso deve aparecer
- Confirmar a maquina como principal
- Deslogar e logar novamente — desta vez nenhuma dialog deve aparecer
Etapa 4 — Verificar as tabelas no banco Oracle
Conectar ao banco Oracle e executar:
-- Verificar estrutura da ZAA
DESC SIGA_PRODUCAO12.ZAAG01;
DESC SIGA_PRDSK12_NEW.ZAAG01;
-- Verificar estrutura da ZAB
DESC SIGA_PRODUCAO12.ZABG01;
DESC SIGA_PRDSK12_NEW.ZABG01;
Etapa 5 — Verificar logs de auditoria
-- Verificar registros de auditoria
SELECT ZAB_USER, ZAB_HOST, ZAB_SO, ZAB_TIPO,
ZAB_DATA, ZAB_HORA, ZAB_STATUS, ZAB_MSG
FROM ZABG01
ORDER BY ZAB_DATA DESC, ZAB_HORA DESC;
-- Verificar maquinas cadastradas
SELECT ZAA_USER, ZAA_HOST, ZAA_SO, ZAA_TIPO,
ZAA_DTCAD, ZAA_ATIVO
FROM ZAAG01
ORDER BY ZAA_USER, ZAA_TIPO;
Operacao e Manutencao
Gerenciar maquinas de um usuario
Opção 1 — Pela rotina administrativa (recomendado):
O time de suporte pode cadastrar manualmente uma nova máquina para qualquer usuário diretamente pelo Protheus, sem necessidade de acesso ao banco, através da função U_ZACADMIN > "Controle de Acesso".
Opção 2 — Via SQL (para desativação ou reset):
Para desativar uma maquina (ex: usuario saiu da empresa ou mudou de computador):
UPDATE ZAAG01
SET ZAA_ATIVO = 'N'
WHERE ZAA_USER = 'JOAO.SILVA'
AND ZAA_HOST = 'PC-JOAO-001';
Para resetar todas as maquinas de um usuario (obrigando novo cadastro):
UPDATE ZAAG01
SET ZAA_ATIVO = 'N'
WHERE ZAA_USER = 'JOAO.SILVA';
Consultar log de auditoria
Opção 1 — Pela rotina administrativa (recomendado):
O time de suporte pode consultar o log de auditoria (ZAB) em modo read-only diretamente no Protheus através da função U_ZACADMIN > "Consultar Log de Auditoria". Nenhuma alteração é permitida pela interface.
Opção 2 — Via SQL:
Consulta de tentativas bloqueadas (relatorio de auditoria)
SELECT
ZAB_USER AS "Usuario",
ZAB_HOST AS "Maquina",
ZAB_SO AS "Sistema Operacional",
ZAB_DATA AS "Data",
ZAB_HORA AS "Hora",
ZAB_STATUS AS "Status",
ZAB_MSG AS "Descricao"
FROM ZABG01
WHERE ZAB_STATUS = 'B'
ORDER BY ZAB_DATA DESC, ZAB_HORA DESC;
Regras de Negocio Implementadas
| Situacao | Comportamento |
|---|---|
| Usuario ADMIN | Nao e verificado (protecao anti-lock-out) |
| Primeiro acesso, aceita maquina principal | Registra ZAA (tipo P), libera acesso |
| Primeiro acesso, recusa | Grava ZAB (B), executa LogOff() |
| Acesso de maquina registrada | Grava ZAB (L), libera normalmente |
| Nova maquina, escolhe tipo | Registra ZAA (P/S/M), libera acesso |
| Nova maquina, recusa ou fecha dialog | Grava ZAB (B), executa LogOff() |
| Hostname nao identificado | Usa fallback com timestamp para rastreio |
| Suporte: cadastro manual (ZACADMIN) | Grava ZAA + ZAB com ID do operador de suporte |
| Suporte: consulta auditoria (ZACADMIN) | Browse ZAB somente leitura, sem CRUD |