如何以管理员身份自动更新firebase数据库值?

时间:2016-10-16 10:32:13

标签: firebase firebase-realtime-database firebase-security

我的游戏注册过程有以下情况:

用户使用电子邮件和密码注册,并要求他们验证帐户。验证后,他们的帐户已创建。用户被重定向到character creation进程,如果他们登录并且尚未创建角色,他们也将被重定向到那里。用户创建角色后,他们会被引导进游戏,现在他们有角色,他们也会直接登录游戏。

所以我现在需要在firebase数据库中user: {}内的一个条目来跟踪这个角色创建状态,即user: { status: 'CREATING_CHARACTER' }user: { status: 'CHARACTER_CREATED' },它会让我知道他们需要在哪个屏幕后显示登录。此状态应该只能由管理员更新我相信,即用户可以授权,并且不应该设置此状态,除非他们实际上经历了字符创建过程并完成此操作。

我正在努力弄清楚如何根据firebase的安全性来处理这个流程。

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

"users": {
  "$uid": {
    "status": {
      ".read": "data.root().child('admins').child(auth.uid).exists() || 
                $uid === auth.uid",
      ".write": "data.root().child('admins').child(auth.uid).exists() ||
                ($uid === auth.uid && data.exists() && data.val() !== newData.val())"
      ".validata": "newData.val() === 'CREATING_CHARACTER' || 
                    newData.val() === 'CHARACTER_CREATED'"
    }
  }
}
  • 用户可以阅读他们自己的状态,或者他们是否在"管理员"组
  • 用户来自"管理员"组可以写状态
  • 用户可以更改其状态(如果已存在且与现有状态不同)
  • 状态可以设置为CREATING_CHARACTERCHARACTER_CREATED

您必须检查用户是否已完成在客户端上创建角色。如果您只希望来自firebase控制台的管理员,请使用' admin'删除部件。来自这些规则的用户。