Autenticação de usuário em WSRESTFUL

Olá a todos,

Estou criando uma API para realizar o cadastro de Pedido de Compras no Protheus 12.

Porém, ao enviar dados para esta API, recebo a mensagem de erro A120COMP - (AJUDA:A120COMP - Usuário não tem permissao para incluir pedidos de compras).

Criei um usuário para ser utilizado pela API que possui permissão para incluir Pedido de Compra, porém, como faço para utilizar suas credenciais em uma WSRESTFUL?

Tentei utilizar Prepare Environment da seguinte forma:


Static function mvcPedidoNovo ( oWS, oJson )
    Local cDoc
    private lMsErroAuto := .F.
    private lAutoErrNoFile := .T. // .T. para retornar erro pela API

    PREPARE ENVIRONMENT EMPRESA "01" FILIAL "01" USER "REST.USER" PASSWORD "Test3@" TABLES "SC7"
    dbSelectArea(cTable)
    dbSetOrder(1)
    MsSeek(xFilial(cTable)+"zzzzzz", .T.)

    // resgatando o DOC
    dbSkip(-1)
    cDoc := SC7->C7_NUM
    If Empty(cDoc)
        cDoc := StrZero(1,Len(SC7->C7_NUM))
    Else
        cDoc := Soma1(cDoc)
    EndIf

    /*
    // aqui eu preencho as variáveis aCabec e aItens
    */

    // incluindo no sistema
    MATA120(1,aCabec,aItens,3,,/*aRatCC */)

    // verificando se ocorreu algum erro
    If !lMsErroAuto
        oWS:SetResponse("Incluido com sucesso! "+cDoc)
    Else
        oWS:SetResponse(GetAutoGRLog())

    EndIf

return !lMsErroAuto

porém o erro persiste.

Deste já agraço a ajuda.

Leandro, bom dia.

O problema não é o Rest, o problema é no execauto do pedido de compra que está te retornando este aviso. Existe um parâmetro no sistema MV_RESTINC ( Indica se restringe a inclusão de pedido de compras sem solicitação de compras para usuários não cadastrados como compradores. Conteúdo do parâmetro igual Sim.), ele deve estar ativado e te gerando o problema, o usuário que está tentando incluir é o mesmo do usuário do REST e ele não deve estar cadastrado como Comprador no sistema.

Complementando, a tabela que este comprador deve estar cadastrado é a SY1.

Abraço

Bom dia Felipe, tudo bem?

Obrigado pela ajuda, deu certo! Alterei o parâmetro MV_RESTINC de “S” para “N”.

Se for necessário ativar novamente este parâmetro, com faço para passar as credenciais de um comprador via REST para o EXECAUTO?

Atualmente eu estou realizando testes via Postman, e não estou passando nenhuma informação sobre o usuário que está realizando a chamada.

Obrigado novamente

Leandro, o seu REST tem autenticação? se possuir, ele vai tentar incluir com o usuário que está sendo autenticado pelo REST, não recomendo utilizar o REST sem autenticação, por questões de segurança.