0

Je veux obtenir certains paramètres et les utiliser pour réinitialiser la fonction de mot de passe de Firebase.Obtenir les paramètres et les stocker et les utiliser sur les variables à utiliser sur ma méthode

Voici comment mon lien ressemble: http://localhost:8080/passwordreset?mode=resetPassword&oobCode=y6FIOAtRUKYf88Rt5OlEwxUuTyEmb3M4gquZSIseX2UAAAFevpj-gw&apiKey=AIzaSyBaCCvq-ZEfQmdrL7fmElXDjZF_J-tku2I

Je veux mode, oobCode et apiKey. Voici ce que j'ai pour l'instant:

export default { 


data: function() { 
    return { 
     passwordNew: '', 
     passwordConfirm: '', 
     mode:'', 
     actionCode: '', 
     continueUrl: '', 
    } 
}, 
methods: { 
    handleResetPassword: function() { 
     var accountEmail; 

     firebase.auth().verifyPasswordResetCode(actionCode).then(function(email) { 
      var accountEmail = email; 
      firebase.auth().confirmPasswordReset(this.actionCode, this.passwordNew).then(function(resp) { 

       alert("Password reset success"); 
       this.$router.push('hello') 
      }).catch(function(error) { 
       // Error occurred during confirmation. The code might have expired or the 
       // password is too weak. 
       console.log("error 1") 
      }); 
     }).catch(function(error) { 
      // Invalid or expired action code. Ask user to try to reset the password 
      // again. 
      console.log("error 2") 
     }); 
    }, 
} 

} 
+1

double possible de [? Comment accéder au bon \ 'cette \' l'intérieur d'un rappel] (https://stackoverflow.com/questions/20279484/how-to -access-the-correct-this-inside-a-callback) – Bert

+0

Merci @Bert pour votre aide, mais je ne pense pas que ce soit un doublon – Muli

+0

Il est au moins en partie, pas du code ci-dessus fonctionnera. Vous ne pouvez pas accéder à vos propriétés de données parce que vous utilisez 'function() {}' dans vos rappels 'then'. Vous devez utiliser une fonction de flèche, une fermeture ou une liaison. – Bert

Répondre

1

De la documentation Firebase:

Certaines actions de gestion des utilisateurs, tels que la mise à jour l'adresse e-mail d'un utilisateur et réinitialiser le mot de passe d'un utilisateur, le résultat dans les courriels envoyés à l'utilisateur . Ces e-mails contiennent des liens que les destinataires peuvent ouvrir pour compléter ou annuler l'action de gestion des utilisateurs. Par défaut, les e-mails de gestion des utilisateurs sont liés au gestionnaire d'actions par défaut, qui est une page Web hébergée dans une URL du domaine Firebase Hosting de votre projet.

lien: https://firebase.google.com/docs/auth/custom-email-handler

Vous devez obtenir ces paramètres et de les stocker sur des variables, de la documentation firebase je suis arrivé ces extraits et juste écrit la fonction getParameterByName:

function getParameterByName(name){ 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(window.location.href); 
    if(results == null) 
    return ""; 
    else 
    return decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 
    // Get the action to complete. 
    var mode = getParameterByName('mode'); 
    // Get the one-time code from the query parameter. 
    var actionCode = getParameterByName('oobCode'); 
    // (Optional) Get the continue URL from the query parameter if available. 
    var continueUrl = getParameterByName('continueUrl'); 

Vous devez obtenir ces paramètres d'abord et vérifiez le code d'action sur la méthode verifyPasswordResetCode, puis vous pouvez modifier le mot de passe et le stocker avec le code d'action à la méthode.

Dans votre défaut d'exportation:

data: function() { 
     return { 
      passwordNew: '', 
      passwordConfirm: '', 
      mode: mode, 
      actionCode: actionCode, 
      continueUrl: continueUrl, 
     } 
    }, 
    methods: { 
     handleResetPassword: function() { 
      var passwordNew = this.passwordNew 
      var actionCode = this.actionCode 
      firebase.auth().verifyPasswordResetCode(actionCode).then(function(email) { 
       console.log("ActionCode: "+ actionCode); 

       firebase.auth().confirmPasswordReset(actionCode, passwordNew).then(function(resp) { 

        alert("Password reset success"); 
        this.$router.push('hello') 
       }).catch(function(error) { 
        console.log("error 1"+ error) 
       }); 
      }).catch(function(error) { 
       console.log("Action code is invalid"+ error) 
      }); 

     }, 
    } 
+0

Merci, cela a aidé: D – Muli