我想用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
,这是真正的帮助,不然我完全拒绝呢?提前感谢你!