Firebase用户设置?

时间:2018-05-05 14:14:44

标签: javascript firebase firebase-realtime-database

我正在为糖尿病患者申请。我已经设法创建注册用户按钮,它可以工作,但我还想要一个新的管理员添加到系统。问题是在管理员登录页面,普通用户也可以登录。我该如何实现这个......我需要帮助吗?



document.getElementById("btnSignUp").addEventListener('click', e=>{
  const userEmail = document.getElementById("email_field").value;
  const userPass = document.getElementById("password_field").value;
  firebase.auth().createUserWithEmailAndPassword(userEmail, userPass).catch(function(error) {
   console.log(error.message);
  });
})

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
	//window.location = 'main.html'

    document.getElementById("user_div").style.display = "block";
    document.getElementById("login_div").style.display = "none";


    var user = firebase.auth().currentUser;

    if(user != null){

      var email_id = user.email;
	 document.getElementById("user_para").innerHTML = "Welcome User : " + email_id;
      

    }

  } else {
    // No user is signed in.

    document.getElementById("user_div").style.display = "none";
    document.getElementById("login_div").style.display = "block";

  }
});


function login(){

  var userEmail = document.getElementById("email_field").value;
  var userPass = document.getElementById("password_field").value;

  firebase.auth().signInWithEmailAndPassword(userEmail, userPass).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;

    window.alert("Error : " + errorMessage);

    // ...
  });

}

function logout(){
  firebase.auth().signOut();
  window.location='index.html'
}




1 个答案:

答案 0 :(得分:1)

以下是一种声明具有特定角色的特定用户的方法,例如“admin”:

您只需为“admin”设置一个您想要只读的数据,就像下面的安全规则一样:

".read": "auth != null && root.child('admins/' + auth.uid).exists()"

并且您将“admin”用户的uid声明为“admins”数据库节点的子节点:

- admins
  -h7yic7LeS123asdfsdgwPrfKZ2: true.     //<- key = uid of a admin user

您的非管理员用户可能仍然可以看到您的网页,但他们无法获取您在此页面中为管理员显示的数据。