0

问这个问题的简短方法是这样的;有谁知道是否可以使用 api 上提供给注册方法的参数来有条件地设置新创建用户的角色?

现在问一个更详细的问题;

我正在开发一个应用程序,该应用程序具有几种不同类型的用户,我想为其分配一个支持和安全角色。我试图根据提供给 Backand 注册方法的参数有条件地设置用户角色,但我无法弄清楚在定义创建时发生的安全操作时如何读取发送到参数对象的值。

在客户端上的我的角度注册控制器中,isManager 角色是根据请求的路由设置的。

if (isManager) {
  params = {
    manager: isManager,
  };
}
return this.Backand.signup(firstName, lastName, email, password, confirmPassword, params)
  .then((result) => {...

该调用有效并创建了一个新的用户对象,我什至可以在根据本说明和后续示例调用 create 方法时将用户对象的角色更改为 Manager。

注意:出于安全原因,您无法从注册 API 更改角色 - 这只能通过让管理员更改安全和身份验证 -> 注册用户页面上的适当设置或创建自定义服务器端来完成具有管理员权限的操作。使用以下代码在创建前触发器中创建新的安全操作(这会将角色更新为“公共”):

可以在这里找到;http://docs.backand.com/en/latest/apidocs/security/#sign-up

我添加了与示例中类似的逻辑,但我想知道是否可以根据提供的参数添加一些条件逻辑。这是我的尝试;

function backandCallback(userInput, dbRow, parameters, userProfile) {
// write your code here
if (parameters && parameters.manager) {
    userInput.Role = 'Manager';
}

return {};
}

但这不起作用,当我尝试添加一个 console.log 时,它将向我显示参数对象的外观,但永远不会生成该日志消息。我当然已经将应用程序置于调试模式,并且当我从 Backand UI 测试安全操作时会生成消息,但是当我通过 api 调用该方法时它不会记录。

有谁知道是否可以使用 api 上提供给注册方法的参数来有条件地设置新创建用户的角色?

4

1 回答 1

0

您可以将参数发送到注册操作并在那里实现您的角色分配逻辑。

这是一个示例注册请求正文

{
 "firstName": "string",
  "lastName": "string",
  "email": "{{username}}",
  "password": "123456",
  "confirmPassword": "123456",
  **"parameters":{ "userType" :"manager"}**
}

现在如文档中所述,在 Create 之前添加一个自定义服务器端 Javascript 安全操作,如下所示:

'use strict';
function backandCallback(userInput, dbRow, parameters, userProfile) {
    // write your code here

    userInput.Role = 'Public';
    if(parameters.userType =='manager')
        userInput.Role = 'Manager';
    return {};
}

为了上述工作,我添加了一个新的“经理”角色(安全和身份验证 --> 安全模板 --> 添加角色)

于 2016-06-29T12:06:32.603 回答