Pular para o conteúdo principal

Guia de Implantacao - MPSWCOMP

Restricao de Compartilhamento de Senhas - TOTVS Protheus​


Visao Geral​

ItemDetalhe
Ponto de entradaAfterLogin (U_MPSWCOMP)
Rotina de suporteU_ZACADMIN — cadastro manual e consulta de auditoria
TabelasZAAG01 (maquinas) / ZABG01 (auditoria)
BancoOracle (via TopConnect)
ArquivosMPSWCOMP.PRW / AFTERLOGIN.PRW

Estrutura das Tabelas​

ZAAG01 — Maquinas Cadastradas​

CampoTipoTamDescricao
ZAA_FILIALChar2Filial da empresa
ZAA_USERChar15ID do usuario (__cUserId)
ZAA_HOSTChar60Hostname da maquina (em maiusculas)
ZAA_SOChar40Sistema operacional detectado
ZAA_TIPOChar1P=Principal / S=Secundaria / M=Movel
ZAA_DTCADData8Data de registro
ZAA_HRCADChar8Hora de registro (HH:MM:SS)
ZAA_ATIVOChar1S=Ativo / N=Inativo

Indice unico: ZAA_FILIAL + ZAA_USER + ZAA_HOST


ZABG01 — Auditoria de Acessos​

CampoTipoTamDescricao
ZAB_FILIALChar2Filial da empresa
ZAB_USERChar15ID do usuario
ZAB_HOSTChar60Hostname da maquina
ZAB_SOChar40Sistema operacional
ZAB_TIPOChar1Tipo do dispositivo (P / S / M)
ZAB_DATAData8Data do evento
ZAB_HORAChar8Hora do evento
ZAB_STATUSChar1L=Liberado / B=Bloqueado / C=Cadastro
ZAB_MSGChar200Descricao 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​

  1. Abrir o IDE TOTVS (ou usar o compilador via linha de comando)
  2. Compilar AFTERLOGIN.PRW primeiro
  3. Compilar MPSWCOMP.PRW
  4. Verificar que nao ha erros de compilacao no log
  5. Verificar compilação no inspetor de objetos

Etapa 2 — Criação do dicinário de dados​

  • Apendar os arquivos six0101.sdb, sx20101.sdb e sx30101.sdb em 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:

  1. Logar com um usuario (nao ADMIN)
  2. A dialog de primeiro acesso deve aparecer
  3. Confirmar a maquina como principal
  4. 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​

SituacaoComportamento
Usuario ADMINNao e verificado (protecao anti-lock-out)
Primeiro acesso, aceita maquina principalRegistra ZAA (tipo P), libera acesso
Primeiro acesso, recusaGrava ZAB (B), executa LogOff()
Acesso de maquina registradaGrava ZAB (L), libera normalmente
Nova maquina, escolhe tipoRegistra ZAA (P/S/M), libera acesso
Nova maquina, recusa ou fecha dialogGrava ZAB (B), executa LogOff()
Hostname nao identificadoUsa 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

Homologação​

Roteiro de Homologação