Validando o nível de um usuário com a NivelUser – Maratona AdvPL e TL++ 370

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.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Daniel Gonçalves Jr. disse:

    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.

Deixe uma resposta

Terminal de Informação