如何使用 SuiteScript 检查用户对 NetSuite 上当前记录的权限?

How can I check permission a user has on the current record on NetSuite with SuiteScript?

我们正在 NetSuite 上编写脚本以与第三方应用集成。

当您访问记录(无论是查看还是编辑)时,我们需要确定 NetSuite 用户对该记录具有何种权限。

我通过文档知道这些是可能的权限值:

我也知道我可以通过以下方式获得用户权限:

var userObj = runtime.getCurrentUser();
var permission = userObj.getPermission('ADMI_ACCOUNTING')`

问题是我需要根据我所在的当前记录知道具体请求什么权限。我在currentRecord中找不到可以让我请求权限的值用户对象,以便能够确定用户对记录的权限级别。

如果有人知道如何实现这一点,我将不胜感激!

我认为最好的办法是创建一个辅助函数,将记录类型映射到它们的匹配权限。您必须手动维护它。

看起来您使用的是 SS2.0,因此假设您有可用的 N/record 模块(或类似的模块),您可以这样做:

function getPermissionName(recordType) {
    var objectPermissionMap = {
        customer: 'LIST_CUSTJOB',
        invoice: 'TRAN_CUSTINVC'
    };

    return objectPermissionMap[recordType];
}

var user = runtime.getCurrentUser();
var permissionName = getPermissionName(record.type);
var permission = runtime.getPermission(permissionName);