2017-03-21 47 views
0

我可以使用https://xxx.au.auth0.com/api/v2/來查詢和更新用戶。但不是如何創建角色並將其分配給用戶。auth0:使用v2 api更新用戶角色

有什麼想法嗎?

+0

希望你找到你正在尋找的東西。已經在下面提出了一個答案,應該做你需要的。如果您仍然有任何問題,請在答案下留下我的評論,我會盡力協助。 – arcseldon

回答

0

執行此操作的簡單方法是在Auth0中使用Rules - 將角色信息添加到用戶配置文件app_metadata屬性中。

例如,下面是一個簡單的例子

function addRolesToUser(user, context, callback) { 

    // ignore this rule if not correct client id of application using Rules 
    if (context.clientID !== 'eTQbNn3qxxxxxxxxxxxL6R7M7MDh') { 
    return callback(null, user, context); 
    } 

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

    // You can add a Role based on what you want 
    // In this case I check domain - give gmail ADMIN role 
    var addRolesToUser = function (user, cb) { 
    if (user.email.indexOf('@gmail.com') > -1) { 
     cb(null, ['ROLE_ADMIN', 'ROLE_USER']); 
    } else { 
     cb(null, ['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); 
     }); 
    } 
    }); 
} 

的角色現在在app_metadata檢查的User Profile的一部分提供。如果您還想讓Roles信息出現在返回的JWT ID令牌中,只需將roles範圍添加到您的認證請求。