Метеор восстановить пароль и сменить пароль

Я новичок в метеоре, и я пытаюсь восстановить пароль и изменить пароль в Метеоре. Я опубликую ниже код, который я использовал для этого. Я получаю шаблон, но пароли не меняются. Может кто-нибудь, пожалуйста, помогите мне с этим? Я использую пакет accounts-password,

Специально useraccounts.html:

<template name="RecoverPassword">  

    <form id="set-new-password">
      <label for="new-password">New Password</label>
      <input type="password" id="new-password" placeholder="Try not to forget this one.">

      <input type="submit" value="Set New Password">

      <p id="form-messages"></p>
    </form>

    <form id="forgot-password">
      <label for="user-email">Email</label>
      <input type="text" id="user-email" placeholder="Email">

      <input type="submit" value="Get Reset Password Instructions">

      <p id="form-messages"></p>
    </form>

</template>  
<template name="ChangePassword">  
    <form id="change-password">
        <label for="current-password">Current Password</label>
        <input type="password" id="current-password" placeholder="Current Password">

        <label for="new-password">New Password</label>
        <input type="password" id="new-password" placeholder="New Password">

        <label for="new-password-repeated">Repeat New Password</label>
        <input type="password" id="new-password-repeated" placeholder="Repeat New Password">

        <input type="submit" value="Update Password">

        <p id="form-messages"></p>
    </form>
</template>

пользовательские user-account.js:

if (Meteor.isServer) {
  Template.RecoverPassword.events({
    'submit #change-password': function(event, template) {
      var currentPassword,
          newPassword,
          newPasswordRepeated;

      currentPassword = template.find('#current-password');
      newPassword = template.find('#new-password');
      newPasswordRepeated = template.find('#new-password-repeated');



      if (newPassword !== newPasswordRepeated) {
        template.find('#form-messages').html("The new passwords don't match!");

        return false;
      }


      if (Meteor.isServer) {
        if (Accounts._resetPasswordToken) {
          Session.set('resetPasswordToken', Accounts._resetPasswordToken);
        }

        Template.RecoverPassword.helpers({
          resetPassword: function() {
            return Session.get('resetPasswordToken');
          }
        });

        Template.RecoverPassword.events({
          'submit #forgot-password': function(event, template) {
            event.preventDefault();
            var email = template.find('#user-email'),
                message;
            alert(email);

            if (email) {

              Accounts.forgotPassword(email);
              message = 'Sent a reset password link to ' + email + '.';
            } else {
              message = 'Please enter a valid email address.'
            }


            template.find('#form-messages').html(message);

            return false;
          },
          'submit #set-new-password': function(event, template) {
            event.preventDefault();
            // Proper decoupled validation would be much nicer than this
            var password = template.find('#new-password').value,
                passwordTest = new RegExp("(?=.{6,}).*", "g");


            if (passwordTest.test(password)) {
              Accounts.resetPassword(
                Session.get('resetPasswordToken'),
                password,
                function(error) {
                  if (err) {
                    template.find('#form-messages').html('There was a problem resetting your password.');
                  } else {

                    Session.set('resetPasswordToken', null);
                  }
                });
            } else {

              template.find('#form-messages').html('Your password is too weak!');
            }

            return false;
          }
        });
      }

Я уже удалил insecure а также autopublish варианты, и я опубликовал данные пользователя. Я просто не могу понять, почему шаблон для изменения пароля не работает.

1 ответ

Ну, проблема в том, что вы запускаете этот код на сервере с if (Meteor.isServer)

Весь ваш код клиента должен быть в if (Meteor.isClient) что-нибудь шаблонного уровня. Вы также получаете это бесплатно, если он находится в папке с именем client,

Другие вопросы по тегам