如何在Firebase中创建不同的用户组?

我正在使用Xcode制作销售点应用程序。

我希望这个应用程序能够跟踪库存商品,允许用户使用条形码搜索库存,扫描库存,添加或查找库存。 库存物品将存储在用户的商店中。

我想有三种类型的用户:

  1. 管理员用户 ,他创建商店并具有对商店的完全访问权限。 他可以管理所有“员工用户”,例如删除他们的访问权限,并且必须邀请员工用户使用唯一代码加入他的商店。 他将具有“员工用户”不具备的特定能力,例如添加和编辑库存的能力。
    经理帐户会是什么样子

  2. 具有限制的员工用户 。 (例如,无法查看编辑用户页面,也无法编辑管理员用户拥有的库存)。
    员工帐户的样子

  3. 只能看到商店和商店中商品的购物者用户
    购物者用户帐户的样子

附加的UI设计应该显示我的意思。 如您所见,经理用户有一个管理员工选项卡,我希望他只能拥有,而其他用户则没有。 在查看库存时,经理还可以选择更多详细信息,而员工用户则没有。 购物者帐户只能访问两个function,查找商店和检查商店中的库存。

所以我的问题是, 如何在Firebase中为我的应用编写三种不同类型的用户? &如何在向其他用户显示其他选项的同时向他们显示我想要显示的选项?

非常感谢,山姆。

这是一个非常广泛的主题,很多都取决于您如何实现应用程序的各个部分。 以下是许多可能的答案之一,只是为了让您开始使用某些链接。

如果您的应用将其数据存储在Firebase数据库产品( 实时数据库或Cloud Firestore )中,或者通过Firebase将数据存储在云存储中 ,那么您可能希望将每个用户的角色存储为自定义声明该用户的个人资料。

Firebase身份validation文档显示了如何设置此类自定义声明 ,例如如何从Node.js脚本将用户的admin属性设置为true

 admin.auth().getUserByEmail('user@admin.example.com').then((user) => { // Confirm user is verified. if (user.emailVerified) { // Add custom claims for additional privileges. // This will be picked up by the user on token refresh or next sign in on new device. return admin.auth().setCustomUserClaims(user.uid, { admin: true }); } }).catch((error) => { console.log(error); }); 

同样,您可以在role属性中设置用户角色。 然后,如果用户具有允许他们访问他们尝试访问的特定数据的角色,则可以检查实时数据库 , 云Firestore或云存储的服务器端安全规则。

在客户端代码中,您可以解码用户的令牌以访问相同的声明并为其优化UI

弗兰克的答案是正确的,但我想添加一个非常简单的附加信息。 如果您在/ users节点中存储用户信息(DOB,昵称等)(许多Firebase应用程序都这样做),只需在该节点中添加角色即可

 users uid_0 name: "Larry" role: "manager" uid_1 name: "Curley" role: "employee" uid_2 name: "Moe" role: "shopper" 

当用户登录时,从用户节点读取他们的节点,然后应用程序将知道他们是什么类型的用户并显示适当的UI。

您还可以利用Firebase规则中的内容来控制每个角色可以访问的内容。