gpt4 book ai didi

javascript - Firebase 处理多个自定义声明

转载 作者:行者123 更新时间:2023-12-02 02:50:20 25 4
gpt4 key购买 nike

所以我有一个用例,用户可能需要多个自定义声明,但在应用程序的不同点添加,即用户可以既是店主又是店主,或者他们可能只是店主或只是用户。

我通过文档了解到,当您分配新的自定义声明时,它会覆盖原始声明,因此我需要阅读用户当前拥有的声明。这就是我陷入困境的地方......在我收到 claim 后,如何将它们重新写回给用户?

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{

}

})

我怀疑这是一个非常简单的修复,但我似乎无法在任何地方找到任何关于如何处理在不同时间添加多个声明的示例......可以这么说,堆叠。非常感谢您提前提供的帮助。

最佳答案

您已经非常接近了:您可以使用展开运算符 (...) 将现有声明和新声明添加到单个对象中:

admin.auth().getUser(uid).then((userRecord)=>{
admin.auth().setCustomUserClaims(uid, {gameAdmin: true, ...userRecord.customClaims});
})

或者,您可以简单地从用户记录中提取声明对象,并向其中添加新声明,然后再将其传回 setCustomUserClaims:

admin.auth().getUser(uid).then((userRecord)=>{
let claims = userRecord.customClaims;
claims.gameAdmin = true;
admin.auth().setCustomUserClaims(uid, claims);
})

要删除声明,您需要将上一个代码段中的 claims.gameAdmin = true; 替换为 delete Claims.gameAdmin;

关于javascript - Firebase 处理多个自定义声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62104477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com