【发布时间】:2019-09-06 02:39:50
【问题描述】:
我正在尝试使用 firebase auth 和 firestore 创建一个应用程序,可以通过电子邮件邀请新用户参与项目。问题是,我不知道在他们拥有 uid 之前存储临时用户项目权限的最佳方式。我希望通过电子邮件收到邀请的用户在打开发送给他们的链接后能够访问该项目。
我尝试了两种不同的方法
为项目中的每个用户都有一个子集合文档
/project/{projectId}/users/{userId}
当邀请新用户时,userId 被设置为他们的电子邮件,具有在创建新用户时触发的云功能以向用户发送邀请电子邮件。用户打开链接后,它删除了他们的用户文档,并运行了一个云函数,该函数创建了一个新的文档,其中包含用户 ID,因为他们在通过身份验证后拥有一次。
这可行,但留下了 10 秒的时间,用户无法与项目交互,因为用于制作新用户文档的云功能正在运行。而且这似乎是一种不好的方法。
拥有一个包含所有用户信息的文档
/project/{projectId}/users/users
users:{
roles: {
users_id: 'admin',
new_user_email: 'admin',
}
}
这个我无法开始工作,因为 firestore 不允许您创建一个带有句点的密钥,但如果有办法解决这个问题,它也可以工作。我还设置了 Firestore 安全规则,因此他们只能编辑密钥所在的字段 uid 或他们的电子邮件(如果他们不是编辑/管理员)。
【问题讨论】:
标签: firebase-authentication google-cloud-firestore