Nesse vídeo demonstraremos a utilização da função NivelUser, que serve para validar o nível de um usuário.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe370 Valida se o usuário tem acesso a nível específico @type Function @author Atilio @since 27/03/2023 @obs Função NivelUser Parâmetros Recebe o nível a ser validado Retorno Retorna .T. (se o usuário NÃO tem acesso) ou .F. (se ele tem SIM o acesso) **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe370() Local aArea := FWGetArea() Local cPaisBkp := cPaisLoc //Para o correto funcionamento, deve ser alterado a variavel publica com o pais (pois internamente da NivelUser ele valida) cPaisLoc := "XXX" //Valida se o usuário tem acesso ao nível 6 If NivelUser("6") FWAlertError("O usuário NÃO tem acesso ao nível 6 no módulo " + cModulo + " (nivel " + cValToChar(cNivel) + ")", "Teste NivelUser") Else FWAlertSuccess("O usuário tem acesso ao nível 6 no módulo " + cModulo, "Teste NivelUser") EndIf cPaisLoc := cPaisBkp FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Boa tarde Daniel.
A variável cNivel é de sistema? Variável global?
Porque não consta a criação/atribuição desta variável no programa.
Estranho é o retorno, .T. se NÃO tem o nível e .F. se TEM o nível, geralmente criamos uma função que retorna .T. como resultado positivo e .F. negativo, como Eof(), Bof(), Deleted(), todos retornam .T. se positivo.
Bom dia xará, tudo joia?
Respondendo suas duas perguntas / observações:
1. Sim a variável cNivel é pública, pelo VsCode debugando, abra qualquer user function com o SIGAMDI ou SIGAADV, e veja na esquerda na lista de variáveis públicas que ela é listada
2. Sim, o retorno dessa função é atípico mesmo
Um grande abraço.