【发布时间】:2022-01-13 20:22:01
【问题描述】:
我正在创建一个带有 Google Firebase 后端的 Angular 应用。我在“用户”和“俱乐部”之间存在多对多关系,如下所示:
| User | Club |
|---|---|
| First Name | Name |
| Last Name | Member Count |
| Phone no | Collection of Documents with User Name, User Role and User's Membership Reference |
| Clubs[] -array of maps with Club Name, Club ID, User's Role and User's Membership Reference | |
| Messages subcollection |
用户文档使用数组,因为俱乐部的数量很少(最多 3-4,通常为 1),并且总是需要检索。俱乐部文档使用子集合,因为成员数量会很大,并不总是需要检索。
用户由俱乐部管理员创建。他们将不知道给定的电子邮件地址是否已经存在(因为他们已经在另一个俱乐部拥有帐户),或者他们是否是该应用程序的全新用户。
我有一个具有以下工作流程的云功能,通过新用户电子邮件开始:
- 检查请求是否具有正确的权限以添加用户
- 查看给定电子邮件是否存在用户
- 如果不存在用户,则使用该电子邮件创建用户
- 然后在任何一种情况下,向 auth 用户添加自定义声明,向 User 中的 Club 数组添加一个条目,并在 Club/members 集合中创建一个包含所需信息的文档
- 将文档添加到消息子集合中,以便用户在下次登录时可以看到他们被添加(如果他们已经有帐户则相关)。
问题在于,如果在第 3 步创建了一个新用户,他们总是在没有密码的情况下创建的,也没有姓名/电话号码等,因为俱乐部管理员不知道这些。没有密码就无法登录!解决这个问题的最佳方法是什么?我试图让后端发送一个单点登录链接,这将强制用户添加密码和所需的信息(如果它们是新的),但这似乎很困难。或者,我正在考虑让用户访问该应用程序然后进行密码重置,但这又不是很用户友好。体验必须非常简单,目前我只打算使用电子邮件/密码或可选的无密码登录。
不胜感激任何建议!
【问题讨论】:
标签: angular firebase firebase-authentication google-cloud-functions