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.