我想用Meteor 0.9.3实现ForgotPassword-Mail。但是在添加accounts-password
forgotPassword运行后,但LogIn不再运行了。
虽然我之前添加了accounts-ui
,但我的logIn运行良好。当我尝试使用accounts-ui
提交我的ForgotPassword时,控制台会抛出:Exception in delivering result of invoking 'returnEMail': ["submit #box-reset"]
我使用完全相同的LogIn:
LoginHandler with ldapjs and Meteor.methods
客户端代码为forgetPassword:
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
,这真的很有帮助,还是我会完全拒绝它?提前谢谢你!
答案 0 :(得分:0)
我发现了:我以前的解决方案不会运行,我仍然不知道。
但我想建议您使用以下页面来解决我的问题:https://github.com/EventedMind/iron-router/issues/315,Email.send issue is email is not defined in Meteor
我仍然要把它们装到我的身上,但基本是一样的。 ;)