0

filter hook在我的Auth0 Delegated Administration Extension中使用它。

function(ctx, callback) {
  // Get the company from the current user's metadata.
  var company = ctx.request.user.app_metadata && ctx.request.user.app_metadata.company;
  if (!company || !company.length) {
    return callback(new Error('The current user is not part of any company.'));
  }

  // The GREEN company can see all users.
  if (company === 'GREEN') {
    return callback();
  }
  // Return the lucene query.
  return callback(null, 'app_metadata.company:"' + company + '"');
}

当用户登录其公司时,GREEN可以看到所有用户。但是当用户登录其公司时,RED看不到任何公司的用户RED

我需要在用户登录时进行此操作,用户应该只能访问其公司内的用户。(GREEN公司的用户除外)。

但是上面的代码没有给出预期的结果。可能是什么问题?

4

2 回答 2

1

这可能与用户搜索文档页面上的一个小警告有关

app_metadata基本上,他们不再让您在该字段中搜索属性。不幸的是,这种变化是破坏性的并且是未经宣布的。

我们必须对 API 进行更改,以便将app_metadatas 的副本保存在单独的数据库中,并将 lucene 语法转换为 MongoDB 查询,以便我们可以通过user_id:"<>" OR user_id:"<>" OR ....

不过需要注意的是,您不能传递超过 72user_id秒的查询。到目前为止,这个数字没有记录,并且是凭经验获得的。

此外,您不能依赖 Auth0 的钩子将新用户添加到您的数据库中,因为这些钩子不会触发社交登录,仅用于Username-Password-Authentication连接。

我希望这能给您一些解释,说明为什么它不能像可能的解决方案那样工作。
如果我是你,我会寻找 Auth0 的替代方案,这就是我们目前正在做的事情。

于 2017-10-27T13:56:03.823 回答
0

我终于得到了这个解决方案。

使用搜索功能过滤用户。我不得不更改以下两个文件。

fetchUsers作用于client\actions\user.js

改变了

导出函数 fetchUsers(search = '', reset = false, page = 0)

导出函数 fetchUsers(search = '@red.com', reset = false, page = 0)

onReset作用于client\containers\Users\Users.jsx

改变了

onReset = () => { this.props.fetchUsers('', true); }

onReset = () => { this.props.fetchUsers('@red.com', true); }

于 2017-11-07T06:09:53.053 回答