是否可以使用 TBA 作为身份验证方法找到 netsuite 员工的角色?

Is it possible to find the role of a netsuite employee using TBA as authentication method?

为了生成所需的令牌 - 消费者密钥、消费者机密、令牌 ID、令牌机密 - 我们正在创建集成和访问令牌,并将它们分配给具有特定角色的员工,该员工可以访问 TBA。 (参考https://medium.com/@morrisdev/netsuite-token-based-authentication-tba-342c7df56386)

那么,是否可以毫不费力地获得该员工的特定角色?

我正在尝试这样做,但我找不到办法,所以我刚开始列出所有可能的员工并要求该人进行身份验证,而不是提供他们的 4 个令牌(以及他们的帐户 ID) , 也提供他们的角色,这看起来很愚蠢。 (一旦我有了员工,我几乎可以找到具有所需角色的人,当然他们是唯一使用它的人。

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

你能在 NetSuite 中创建一个 Restlet 吗?

/**
 *@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
        };
    }
);

如果您可以使用令牌向 restlet 部署 url 发出 HTTPS 请求,restlet 将 return 发挥作用。

您无法仅使用 SuiteTalk 调用来获取此信息。 一个用户可以有多个角色。此外,Netsuite 角色具有很好的可塑性,因此除非您处理的是标准角色,否则它们在确定权限方面用处不大。

因此,您需要检查特定权限,而不是获得角色。

您更好的选择是创建一个配套的 RESTlet,您可以使用与查询 SuiteTalk 时相同的标记来查询它。然后你可以查询 RESTlet 的权限(或者只是让它给你所有你关心的权限所以你只需要调用它一次。

您还可以要求客户在用户和角色上设置令牌,以满足您的需求。为此,您必须指定角色的权限,这可能会很麻烦,所以最后:

您还可以在您的开发帐户中创建角色和集成记录,并将它们作为捆绑包提供。然后,您会要求您的客户安装捆绑包并使用令牌的角色和集成记录,而您无需查询任何内容。