Можно ли найти роль сотрудника netsuite, использующего TBA в качестве метода аутентификации? - PullRequest
5 голосов
/ 01 октября 2019

Чтобы сгенерировать необходимые токены - ключ потребителя, секрет потребителя, идентификатор токена, секрет токена - мы создаем интеграцию и получаем доступ к токенам и назначаем их сотруднику с определенной ролью, имеющей доступ к TBA. ( См. https://medium.com/@morrisdev/netsuite-token-based-authentication-tba-342c7df56386)

Разве не возможно получить конкретную роль этого сотрудника без особых хлопот?

Я пытаюсь это сделать, ноЯ не мог найти способ, поэтому я просто начал перечислять всех возможных сотрудников и потребовал, чтобы лицо, проходящее аутентификацию, кроме предоставления его 4 токенов (вместе с идентификатором их учетной записи), также предоставило свою роль, что кажется глупым (Однажды яесть сотрудники, я могу найти того, кто обладает необходимой ролью, если они единственные, кто его использует. )

private static void GetEmployees()
{
    EmployeeSearch search = new EmployeeSearch();
    EmployeeSearchBasic esb = new EmployeeSearchBasic();

    esb.isInactive = new SearchBooleanField();
    esb.isInactive.searchValue = false;
    esb.isInactive.searchValueSpecified = true;

    search.basic = esb;
    SearchResult res = Client.Service.search(search);
    res.pageSize = 2000;
    res.pageSizeSpecified = true;

    if (res.status.isSuccess)
    {
        Record[] searchRecords = res.recordList;
        if (searchRecords != null && searchRecords.Length >= 1)
        {
            //Do something...
        }
        else
        {
            //Do something...
        }
    }
    else
    {
        throw new Exception("Couldn't find any employees.");
    }
}

Причина, по которой я ищу их роль, чтобы убедиться, что у него есть необходимые разрешения, которые я буду использовать. Если мне не нужна их роль для выполнения этой задачи, потому что она снова каким-то образом связана с токенами, пожалуйста, дайте мне знать, как и япри необходимости измените контекст.

Я использую следующие веб-сервисы - https://webservices.netsuite.com/wsdl/v2017_2_0/netsuite.wsdl

1 Ответ

0 голосов
/ 30 октября 2019

Не могли бы вы создать рестлет в NetSuite?

/**
 *@NApiVersion 2.x
 *@NScriptType Restlet
 */

define(['N/log', 'N/runtime'],
    function(log, runtime) {

        function _get(context) {
            var cUser = runtime.getCurrentUser();
            return cUser.role;
        }

        return {
            get: _get
        };
    }
);

Если вы можете сделать HTTPS-запрос к URL-адресу развертывания рестлета с помощью токена, рестлет вернет роль.

...