2015-07-09 13 views
5

Ich kann nicht wirklich herausfinden, wie das Firebase Auth-Objekt zurückgesetzt wird, sobald es zum ersten Mal geladen wurde.Firebase Auth wird nicht aktualisiert, sobald das Passwort zurückgesetzt wurde

Ich bin auf der Suche nach dem bool true Wert in auth.password.isTemporaryPassword, die den Benutzer zwingt, ihr Passwort zurückzusetzen. Nachdem der Benutzer diese Prozedur ausgeführt und zurückgesetzt hat, bleibt auth.password.isTemporaryPasswordtrue.

Der einzige Weg, den ich gefunden habe, ist, den Benutzer zu loggen und wieder einzuloggen, was das Auth-Objekt aktualisiert.

Login:

var ref = new Firebase(environment); 

$firebaseAuth(ref) 
.$authWithPassword({ 
    email: email, 
    password: password 
},sessionObj) 
.then(function(authData) { 
    if (password.isTemporaryPassword === true) { 
     $state.go('resetpassword'); 
    } 
}) 
.catch(function(error) { 
    deferred.reject(error); 
}); 

Passwort zurücksetzen:

$scope.reset.oldPassword   = "oldPass"; 
$scope.reset.newPassword   = "newPass"; 
$scope.reset.email    = "usermail"; 

ref.changePassword($scope.reset, function(err) { 
    if(err) { 
     ... 
    } 
    else { 
     $state.go('home') 
    } 
}) 

password.isTemporaryPassword bleibt true, bis ich die Benutzer sich wieder anmelden, die Hacky scheint.

+1

Anstatt Code zu beschreiben, benutzen Sie bitte einen minimalen Schnipsel enthält, das das Problem in Frage wiedergibt. Es wird viel einfacher sein, dir zu helfen. (siehe http://stackoverflow.com/help/mcve) –

Antwort

0

sollten Sie in der Lage sein, die onAuth Funktion nutzen zu hören für den Zustand ändert die Authentifizierung:

ref.onAuth(function(authData) { 

    //user authenticated & needs to change her password 
    if(authData && authData.password.isTemporaryPassword) { 
     $state.go('resetpassword'); 
    } 

    //else user is logged in with valid password 
    else if(authData) { 

    } 

    //else user is logged out 
    else { 

    } 
}); 
Verwandte Themen