2014-09-30 104 views
0

我想用Meteor 0.9.3实现ForgotPassword-Mail。但添加accounts-password忘记密码运行后,但LogIn不再运行。 虽然在此之前我已经添加了accounts-ui,这与我的logIn运行良好。当我试图提交我ForgotPassword与accounts-ui,控制台抛出:Exception in delivering result of invoking 'returnEMail': ["submit #box-reset"] 我使用完全一样在相同的登录: LoginHandler with ldapjs and Meteor.methods忘记用流星中LDAP的密码

代码对forgotPassword客户端:

Template.forgotPassword.events({ 
    'submit #box-reset': function(e,t){ 
     e.preventDefault(); 

     var forgotPasswordForm = $(e.currentTarget), 
      username = trimInput(forgotPasswordForm.find('#forgotPasswordEmail').val().toLowerCase()); 

     if (isNotEmpty(username)){ 
      Meteor.call('returnEMail', username, function (err, result) { 
        if (err) { 
         console.log(err); 
        } else { 
         Accounts.forgotPassword({ email: result}, function (err) { 
           if (err) { 
            if (err.message === 'User not found [403]') { 
             Session.set('alert', 'This email does not exist.'); 
            } else { 
             console.log(err); 
             Session.set('alert', 'We\'re sorry but something went wrong.'); 
            } 
           } else { 
            Session.set('alert', 'Email Sent. Please check your mailbox to reset your password.'); 
           } 

          }); 
         } 
       }); 
     } else{ 
      Session.set('alert','Please insert your username!') 
     } 
     return false; 
    } 
}); 

典论服务器端:

verifyEmail = function(username) { 
    LDAP.client = ldap2.createClient({ 
     url: 'ldap://' + LDAP.serverIP + ':' + LDAP.serverPort 
    }); 

    future = new Future; 

    LDAP.client.search(LDAP.searchOu, LDAP.searchQuery(username), function (err, req, res) { 
     req.on('searchEntry', function (entry) { 
      LDAP.Mail = entry.object.mail; 
     }); 

     req.on('error', function (err) { 
      throw new Meteor.Error(500, "LDAP server error"); 
     }); 

     req.on('end', function(res, entry){ 
      future['return'](LDAP.Mail); 
     }); 
    }); 
    return future.wait(); 
}; 

Meteor.methods({ 
    returnEMail: function(username, err){ 
     if (err){ 
      console.log(err); 
     } else{ 
      return verifyEmail(username); 
     }; 
    } 
}); 

那么,有没有方法可行仍然使用Accounts.forgotPassword,这是真正的帮助,不然我完全拒绝呢?提前感谢你!

回答