Nesse vídeo demonstraremos a utilização da função FWsFAllUsers, que serve para buscar todos os usuários cadastrados no sistema, retornando em um array.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zExe245 Função que busca todos os usuários cadastrados @type Function @author Atilio @since 20/02/2023 @see https://tdn.totvs.com/display/public/PROT/FWSFALLUSERS @obs Função FWsFAllUsers Parâmetros + aUserList , Array , Informa a lista de usuários + aKeyValues , Array , Lista com os campos que serão retornados + Reservado + Reservado + lBlock , Lógico , Retorna informação de usuários bloqueados Retorno + aUsers , Array , Array com as seguintes posições [1] Id da tabela de usuários (r_e_c_n_o_) ; [2] Id do usuário ; [3] Login do Usuário ; [4] Nome do usuário ; [5] email do usuário ; [6] departamento do usuário ; [7] cargo do usuário **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao **** /*/ User Function zExe245() Local aArea := FWGetArea() Local lAcessa := .F. Local cUsrLogad := RetCodUsr() Local aTodosUsr := FWSfAllUsers() Local nEncontrou := 0 Local aGrupos := {} Local nGrupoAtu := 0 Local aEmpFil := {} //Se for admin, ele tem acesso a empresa e filial If FWIsAdmin() lAcessa := .T. Else //Efetua a busca pelo usuário logado nEncontrou:= aScan(aTodosUsr,{|x| x[2] == cUsrLogad }) //Se encontrou o usuário If nEncontrou > 0 //Busca todos os grupos que o usuário tem acesso aGrupos := FWSFUsrGrps(cUsrLogad) //Percorre os grupos For nGrupoAtu := 1 To Len(aGrupos) //Busca empresa e filial que o grupo tem acesso aEmpFil := FWGrpEmp(aGrupos[nGrupoAtu]) //Se veio dados If Len(aEmpFil) > 0 //Caso seja um arroba ou tiver a empresa e filial logadas, o usuário tem acesso If "@" $ aEmpFil[1] .Or. aEmpFil[1] == cEmpAnt + cFilAnt lAcessa := .T. Exit EndIf EndIf Next endif EndIf If lAcessa FWAlertSuccess("Usuário possui acesso!", "Teste FWSfAllUsers") EndIf FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.