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

时间:2018-01-15 00:38:20

标签: ios firebase firebase-authentication multiple-users

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

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

我希望有三种类型的用户:

  1. 经理用户,他创建商店并拥有对商店的完全访问权限。他可以管理所有'员工用户,例如删除他们的访问权限,并且他必须邀请员工用户使用唯一代码加入他的商店。他将拥有“员工用户”的特定能力。不要添加和编辑股票的能力 What a manager account would look like

  2. 员工用户,有限制。 (例如,无法查看编辑用户页面,也无法编辑管理员用户拥有的库存) What a Employee account would look like

  3. 购物者用户,只能看到商店和商店中的商品。
    What a shopper users account would look like

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

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

    非常感谢, 萨姆。

2 个答案:

答案 0 :(得分:2)

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

如果您的应用将其数据存储在Firebase数据库产品之一(Realtime DatabaseCloud Firestore)中,或者如果它将文件存储在Cloud Storage through Firebase中,那么您可能希望存储每个用户在该用户的个人资料中作为自定义声明的角色。

Firebase Authentication documentation shows how to set such custom claims,例如如何从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属性中设置用户角色。然后,如果用户具有允许他们访问他们尝试的特定数据的角色,则可以检查Realtime DatabaseCloud FirestoreCloud Storage的服务器端安全规则访问。

在客户端代码中,您可以decode the user's token to get access to the same claims并为其优化用户界面

答案 1 :(得分:0)

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

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

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

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