首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理多个自定义索赔的消防站

处理多个自定义索赔的消防站
EN

Stack Overflow用户
提问于 2020-05-30 15:15:35
回答 1查看 653关注 0票数 2

因此,我有一个用例,用户可能需要多个自定义声明,但添加在应用程序的不同点,即用户既可以是店主,也可以是店主,也可以是用户。

我通过文档了解到,当您指定一个新的自定义声明时,它会写入原始声明,因此我需要阅读用户当前拥有的声明。这就是我的stuck...after,我收到了这些声明,我如何将它们重新写回给用户呢?

代码语言:javascript
复制
exports.onGameManagement = functions.database.ref("Core/CoreGames/{game}/teams/committee").onCreate((snapshot,context)=>{
    const position = snapshot.key;
    const uid = snapshot.val();
    const game = context.params.game;
    if(position=="gLead"||position=="depGameLead"){
        //NEEDS ADMIN RIGHTS
        //ADD TOKEN WRITE RIGHTS. - check for current claims
        admin.auth().getUser(uid).then((userRecord)=>{
            //got the users claims
            console.log(userRecord.customClaims);
            //how do i add this array of claims to the setCustomUserClaims() method?
            admin.auth().setCustomUserClaims(uid, {gameAdmin: true, userRecord.customClaims}).then(() => {
                // The new custom claims will propagate to the user's ID token the
                // next time a new one is issued.
              });
        })

    }else{

    }

})

我怀疑这是一个非常简单的修复,但我似乎在任何地方都找不到如何处理在单独的times...stacking中添加多个声明的例子。非常感谢您的提前帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-30 15:46:09

您非常接近:您可以使用spread (...)将现有的声明和新声明添加到单个对象中:

代码语言:javascript
复制
admin.auth().getUser(uid).then((userRecord)=>{
    admin.auth().setCustomUserClaims(uid, {gameAdmin: true, ...userRecord.customClaims});
})

或者,您可以从用户记录中提取claims对象,并在将其传递回setCustomUserClaims之前将新声明添加到其中。

代码语言:javascript
复制
admin.auth().getUser(uid).then((userRecord)=>{
    let claims = userRecord.customClaims;
    claims.gameAdmin = true;
    admin.auth().setCustomUserClaims(uid, claims);
})

要删除声明,您可以在前面的片段中用claims.gameAdmin = true;替换delete claims.gameAdmin;

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62104477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档