Sam*_*Sam 6 ios multiple-users firebase firebase-authentication
我正在使用 Xcode 制作销售点应用程序。
我希望这个应用程序能够跟踪库存项目,允许用户使用条形码搜索库存、扫描库存、添加或查找库存。库存物品将存储在用户的“商店”中。
我想要三种类型的用户:
经理用户,他创建了一个商店并拥有对该商店的完全访问权限。他可以管理所有“员工用户”,例如删除他们的访问权限,员工用户必须由他使用唯一代码邀请才能加入他的商店。他将拥有“员工用户”所没有的特定能力,例如添加和编辑库存的能力。
经理帐户的样子
附加的 UI 设计应该显示我的意思。如您所见,经理用户有一个管理员工选项卡,我希望只有他可以拥有而其他用户没有。在查看库存时,经理还可以选择了解更多详细信息,而员工用户则没有。购物者帐户只能访问两个功能,查找商店和检查商店中的库存。
所以我的问题是, 如何在 Firebase 中为我的应用编写三种不同类型的用户? & 如何在向其他用户显示其他选项的同时只向他们显示我想向他们显示的选项?
Fra*_*len 11
这是一个非常广泛的主题,其中很大一部分取决于您如何实现应用程序的各个部分。以下是众多可能的答案之一,只是为了让您开始使用一些链接。
如果您的应用将其数据存储在 Firebase 数据库产品之一(Realtime Database或Cloud Firestore)中,或者如果它通过 Firebase将文件存储在Cloud Storage 中,那么您可能希望将每个用户的角色存储为自定义声明该用户的个人资料。
在火力地堡认证文档展示了如何设定自定义声明,例如如何将设置admin
用户的属性true
从Node.js的脚本:
Run Code Online (Sandbox Code Playgroud)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
属性中设置您的用户角色。然后,您可以检查实时数据库、Cloud Firestore或Cloud Storage的服务器端安全规则,如果用户具有允许他们访问他们尝试访问的特定数据的角色。
在客户端代码中,您可以解码用户的令牌以访问相同的声明并为它们优化 UI
弗兰克的答案是正确的,但我想添加一条非常简单的附加信息。如果您将用户信息(DOB、昵称等)存储在 /users 节点中(正如许多 Firebase 应用程序所做的那样),只需在该节点中添加角色即可
users
uid_0
name: "Larry"
role: "manager"
uid_1
name: "Curley"
role: "employee"
uid_2
name: "Moe"
role: "shopper"
Run Code Online (Sandbox Code Playgroud)
当用户登录时,从用户节点读取他们的节点,应用程序就会知道他们是什么类型的用户并显示适当的 UI。
您还可以在 Firebase 规则中利用它来控制每个角色可以访问的内容。
归档时间: |
|
查看次数: |
7964 次 |
最近记录: |