No vídeo de hoje, vamos demonstrar em como alterar um acesso do usuário em tempo de execução via AdvPL.
A dúvida de hoje, nos perguntaram, se seria possível, liberar ou bloquear um acesso do usuário via comando AdvPL.
Pensando nisso, montamos esse exemplo, onde vamos demonstrar em como usar o ponto de entrada ChkExec para procurar uma posição dentro da variável pública cAcesso e fazer a manipulação. Tome muito cuidado ao fazer alterações nessa variável, pois pode acarretar problemas na performance do sistema, aqui é apenas um exemplo de estudo de caso.
Segue abaixo o vídeo exemplificando:
E abaixo o código fonte desenvolvido:
//Bibliotecas #Include "Totvs.ch" /*/{Protheus.doc} User Function ChkExec Ponto de Entrada acionado ao clicar em alguma opção no menu @type Function @author Atilio @since 15/03/2024 @see https://tdn.totvs.com/display/public/framework/CHKEXEC+-+Dispara+ponto+de+entrada /*/ User Function ChkExec() Local lContinua := .T. Local cCodUsr := RetCodUsr() Local cFuncao := Alltrim(Upper(PARAMIXB)) //Faz as tratativas de acesso, conforme usuário e função fTrataAcesso(cCodUsr, cFuncao) Return lContinua Static Function fTrataAcesso(cCodUsr, cFuncao) Local nPosicao := 2 //Vamos trocar o acesso número 2, se pode alterar produtos - https://tdn.totvs.com/pages/releaseview.action?pageId=221546134 Local cAntes := "" Local cDepois := "" //Se for o cadastro de produtos e o usuário for o Daniel Atilio If cFuncao == "MATA010()" .And. cCodUsr $ "000003;" //Pega Antes da segunda posição e depois cAntes := Left(cAcesso, nPosicao - 1) cDepois := SubStr(cAcesso, nPosicao + 1) //Agora altera a variável pública de acessos, definindo a posição como "N" cAcesso := cAntes + "N" + cDepois EndIf Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.