0

当用户在我们的 SCA Mont Blanc 网站上注册时,我们需要在创建用户之前检查他们的电子邮件是否唯一。因此,在注册新用户之前,我们编辑了该Accounts@1.X.X/SuiteScript/Account.Model.js文件以检查Customer具有特定电子邮件地址的任何用户的表格。

问题是:该脚本在角色下执行,Customer Center并且没有查看/查询Customer表的权限。所以我们的检查使脚本崩溃。

我们如何Customer在用户注册时访问该表(特别是文件Accounts@1.X.X/SuiteScript/Account.Model.js)?您可以提供任何解决方案/建议吗,因为我很困惑:(

我尝试过的事情:

  • 更改服务文件的角色/权限services/Account.Register.Service.ss以在我创建的名为Webstore User. 不幸的是,这导致登录页面显示错误;You do not have permission to view this page. 也许我没有更改正确的文件或正确设置新角色?
  • 创建了一个新角色,该角色具有所有权限Customer Centreplusview权限Customers。但与上述相同的错误。

AccountOverrides@1.0.0/SuiteScript/Account.Model.js

...

return SCModel.extend({

    name: 'Account'

,   register: function (user_data)
    {
        // Check if there is already a user/customer with this email address
        // The below function will crash the script because
        // the script cannot access the 'customer' table
        var emailDulicates = nlapiSearchRecord('customer', null, 
            new nlobjSearchFilter('email', null, 'is', ''+user_data.email));

        if (emailDulicates && emailDulicates.length > 0) {
            Application.sendError({"Email already taken."});
            return false;
        }

        ... continue on to register user

    }
});
4

1 回答 1

1

我所做的是创建一个伴随的 .ss 文件并赋予它权限。然后你用 nlapiRequestURL 调用它并取回数据。这比套件更方便,因为您将所有文件放在一起并有一个更简单的 URL 来处理

您可以使用 nlapiRequestURL 调用此服务器端。来自您的 SuiteScript/Account/Model.js 或来自 services/Account.Register.Service.ss

您也可以将其称为客户端以在注册之前验证电子邮件。在获得干净的电子邮件评估之前,您将禁用“注册”按钮。

于 2017-04-25T05:42:59.203 回答