2017-02-09 38 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)等 - 有很大的靈活性。

相關問題