2015-04-19 1 views
0

J'essaie de démarrer avec Firebase et maintenant avec la partie sécurité. J'essaie de garder le plus simple possible pour commencer, en utilisant des guides et des extraits de code du site Web de Firebase.La connexion personnalisée de Firebase échoue (JavaScript)

Afin de garder les choses simples, j'ai une page web contenant un mot de passe (id "Code") et un champ de saisie utilisateur (id "Door"). Comment vérifier si le mot de passe saisi dans le champ "Code" est égal au mot de passe déjà stocké dans le noeud https://mydatabase.firebaseio.com/loapp_users/BAAJ/password, BAAJ étant un ID utilisateur de l'un des utilisateurs stockés dans le noeud loapp_users, le tout avec un noeud enfant "mot de passe"?

Le code ci-dessous ne semble pas faire l'affaire.

$(document).ready(function(){ 
    // Monitoring User Authentication State 

    // Use the onAuth() method to listen for changes in user authentication state 

    // Create a callback which logs the current auth state 
    function authDataCallback(authData) { 
     if (authData) { 
     console.log("User " + authData.uid + " is logged in with " + authData.provider); 
     } else { 
     console.log("User is logged out"); 
     } 
    } 
    // Register the callback to be fired every time auth state changes 
    var ref = new Firebase("https://mydatabase.firebaseio.com"); 
    ref.onAuth(authDataCallback); 

    $("#logout").click(
     function logout() { 
      ref.unauth(); 
      ref.offAuth(authDataCallback); 
     } 
    ); 

    // LOGIN 
    // The code to authenticate a user varies by provider and transport method, but they all have similar signatures and 
    // accept a callback function. Use it to handle errors and process the results of a successful login. 

    // Create a callback to handle the result of the authentication 
    function authHandler(error, authData) { 
     if (error) { 
     console.log("Login Failed!", error); 
     } else { 
     console.log("Authenticated successfully with payload:", authData); 
     } 
    }; 

    $("#login").click(
     function() { 
      var usersRef = new Firebase("https://mydatabase.firebaseio.com/loapp_users"); 
      // Authenticate users with a custom Firebase token 
      var _user = $("#Door").val(); 
      var _level = "docent"; 
      var _password = $("#Code").val(); 
      var userRef = usersRef.child(_user); 
      // Attach an asynchronous callback to read the data at our user reference 
      userRef.on("value", function(snapshot) { 
       console.log(snapshot.val()); 
       if (snapshot.val().child("password").text() == _password) { 
        ref.authWithCustomToken("eyJ0e....etc...mlhdCI6MTQyOTM4Mzc0M30.Vn1QF7cRC6nml8HB9NAzpQXJgq5lDrAie-zIHxtOmFk", authHandler); 
        } else { 
        console.log("Gebruikersnaam en code komen niet overeen") 
        } 
       }, function (errorObject) { 
        console.log("The read failed: " + errorObject.code); 
       }); 
     } 
    ); 
}); 

Répondre

0
snapshot.val().child("password").text() 

devrait plutôt être:

snaphot.val().password 

Ensuite, il fonctionne.