提出这个问题的简短方法是这样的;有谁知道是否可以使用提供给api上的注册方法的参数来有条件地设置新创建的用户的角色?
现在提供更详细的问题;
我正在开发一个应用程序,该应用程序具有多种不同类型的用户,我希望为其分配一个后备和安全角色。我试图根据提供给Backand注册方法的参数有条件地设置用户角色,但是在定义创建时发生的安全操作时,我无法弄清楚如何读取发送到参数对象的值。 / p>
在客户端的角度注册控制器中,isManager角色是根据请求的路由设置的。
if (isManager) {
params = {
manager: isManager,
};
}
return this.Backand.signup(firstName, lastName, email, password, confirmPassword, params)
.then((result) => {...
该调用有效并创建一个新的用户对象,我甚至可以根据本说明和后续示例调用create方法时将用户对象的角色更改为Manager。
注意:出于安全原因,您无法从注册API更改角色 - 这只能通过让管理员更改安全性和安全性的相应设置来实现。验证 - > “已注册用户”页面,或通过使用“管理员”权限创建自定义服务器端操作。使用以下代码在Before Create触发器中创建新的安全操作(这会将角色更新为' Public'):
这里找到了; 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上的注册方法的参数来有条件地设置新创建的用户的角色?
答案 0 :(得分: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 {};
}
为了完成上述工作,我添加了一位新的经理'角色(安全和验证 - >安全模板 - >添加角色)