The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rocket.Chat/server/methods/sendForgotPasswordEmail.js

51 lines
1.5 KiB

import s from 'underscore.string';
Meteor.methods({
sendForgotPasswordEmail(email) {
check(email, String);
email = email.trim();
const user = RocketChat.models.Users.findOneByEmailAddress(email);
if (user) {
const regex = new RegExp(`^${ s.escapeRegExp(email) }$`, 'i');
email = (user.emails || []).map((item) => item.address).find((userEmail) => regex.test(userEmail));
if (RocketChat.settings.get('Forgot_Password_Customized')) {
const subject = RocketChat.placeholders.replace(RocketChat.settings.get('Forgot_Password_Email_Subject') || '', {
name: user.name,
email,
});
const html = RocketChat.placeholders.replace(RocketChat.settings.get('Forgot_Password_Email') || '', {
name: s.escapeHTML(user.name),
email: s.escapeHTML(email),
});
Accounts.emailTemplates.from = `${ RocketChat.settings.get('Site_Name') } <${ RocketChat.settings.get('From_Email') }>`;
Accounts.emailTemplates.resetPassword.subject = function(/* userModel*/) {
return subject;
};
Accounts.emailTemplates.resetPassword.html = function(userModel, url) {
return html.replace(/\[Forgot_Password_Url]/g, url);
};
}
try {
Accounts.sendResetPasswordEmail(user._id, email);
} catch (error) {
throw new Meteor.Error('error-email-send-failed', `Error trying to send email: ${ error.message }`, {
method: 'registerUser',
message: error.message,
});
}
return true;
}
return false;
},
});