2017-02-09 39 views
0

我们正在使用auth0来存储具有角色详细信息的用户。如何将单个用户添加到角色

我们希望通过API调用以编程方式更新auth0中的用户角色。我们按照下面的文章,

User Profile Update

我们想用下面的网址,

PATCH/API /用户/ b78a4564-ad7f-4af2-b7b2-79bbe1f703ef /角色

我们不”了解我们需要通过此URL传递哪些详细信息。 我们是否需要为此编写任何规则? 如果有任何代码片段可用,那么这将有所帮助。

回答

0

要更新用户配置文件中的规则,通常意味着更新其app_metadata - 并且您使用update user APIv2端点。

例如,假设您有以下用户配置文件(去掉了一些特性以节省空间):

{ 
    "email": "[email protected]", 
    "email_verified": true, 
    "user_id": "auth0|58585012121212b3ac511f8", 
    "app_metadata": { 
      "roles": [ 
       "ROLE_ADMIN", 
       "ROLE_USER" 
      ] 
     }, 
} 

而且你要更新的角色的信息,那么你可以使用API​​端点为。

现在,您提到了规则,并且是的,您可以说将角色信息分配到规则中,也就是在验证后触发。非常简单的例子如下:

function (user, context, callback) { 

    user.app_metadata = user.app_metadata || {}; 
    user.user_metadata = user.user_metadata || {}; 

    var addRolesToUser = function(user, cb) { 
     cb(null, ['ROLE_ADMIN', 'ROLE_USER']); 
    }; 

    addRolesToUser(user, function(err, roles) { 
    if (err) { 
     callback(err); 
    } else { 
     user.app_metadata.roles = roles; 
     auth0.users.updateAppMetadata(user.user_id, user.app_metadata) 
     .then(function(){ 
      callback(null, user, context); 
     }) 
     .catch(function(err){ 
      callback(err); 
     }); 
    } 
    }); 
} 

在上面,我只是分配相同的角色到每个经过验证的用户。然而,你可以做一个API查找/白名单只有特定的客户端(使用context.clientID)等 - 有很大的灵活性。

相关问题