Hasura和Auth0-设置自定义声明

时间:2020-10-16 15:32:01

标签: authentication auth0 hasura

Hasura tutorial之后,我添加了以下操作:

function (user, context, callback) {
  const namespace = "https://hasura.io/jwt/claims";
  context.accessToken[namespace] =
    {
      'x-hasura-default-role': 'user',
      // do some custom logic to decide allowed roles
      'x-hasura-allowed-roles': ['user'],
      'x-hasura-user-id': user.user_id
    };
  callback(null, user, context);
}

我不遵循“做一些自定义逻辑来决定允许的角色”的评论-我将如何添加这样的自定义逻辑?

我想必须签署表单,一个表单将在系统中创建“用户”,另一个表单将创建“管理员”,但是尚不清楚文档应如何实现。

我是否需要将用户类型存储在Hasura数据库中,然后在登录时使用上述操作查询用户数据库并为用户分配适当的规则?

在哪种情况下,我该如何区分某人注册成为管理员或用户的方式? Hasura文档中的“同步用户”操作不能解释如何区分用户?

function (user, context, callback) {
  const userId = user.user_id;
  const nickname = user.nickname;
  
  const admin_secret = "xxx";
  const url = "yyyyy";
  const query = `mutation($userId: String!, $nickname: String) {
    insert_users(objects: [{
      id: $userId, name: $nickname
    }], on_conflict: {constraint: users_pkey, update_columns: [last_seen, name]}
    ) {
      affected_rows
    }
  }`;
  const variables = { "userId": userId, "nickname": nickname };
  request.post({
      url: url,
      headers: {'content-type' : 'application/json', 'x-hasura-admin-secret': admin_secret},
      body: JSON.stringify({
        query: query,
        variables: variables
      })
  }, function(error, response, body){
       console.log(body);
       callback(null, user, context);
  });
}

0 个答案:

没有答案