与用户一起申请

时间:2017-02-03 15:12:18

标签: firebase firebase-realtime-database firebase-authentication

我正在开发一个应用程序,其中将有用户在应用程序中具有特定权限,我将在saas模型中提供,我的问题是我是否应该在firebase中为使用我的应用程序的每个公司创建一个项目或者在那里在firebase数据库中控制它的任何方法?

1 个答案:

答案 0 :(得分:0)

您必须使用自定义令牌声明才能为用户设置不同的权限。

在您的规则中,您可以设置如下内容:

{
  "rules": {
    "adminContent": {
      ".read": "auth.token.premiumAccount === true",
      ".write": "auth.token.premiumAccount === true",
    }
  }
}

然后,您可以使用admin node.js sdk为该用户创建一个自定义声明:

admin.auth().createCustomToken(uid, {premiumAccount: true});

然后,您可以在登录后将customToken发送到客户端应用。请确保验证后端的ID令牌,然后验证用户是否符合您的权限要求:

var provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider)
  .then(function(result) {
    // User is signed in. Get ID token.
    return result.user.getToken();
  })
  .then(function(idToken) {
    // Send ID token to backend.
    $.post(
      '/setCustomAttributes',
      {
        idToken: idToken
      },
      function(data, status) {
        // Check if custom token is returned.
        if (status == 'success' && data) {
          var json = JSON.parse(data);
          if (json && json.customToken) {
            // User is eligible for upgrade. Set custom attributes on the user
            // via custom token sign-in.
            firebase.auth().signInWithCustomToken(json.customToken);
          }
        }
      });
    }).catch(function(error) {
      console.log(error);
    });