Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you change the reset password URL in meteor?

I am using meteor along with the accounts-password package. I'm rolling my own login and password changing/resetting UI and want to know...

How can I customize the password reset link in the reset password email sent as a result of Accounts.resetPassword?

Currently it in the form like so: /#/reset-password/<id>'. Since I am using meteor router, I would like to send in the form '/reset-password/<id>'so I can catch it with the route '/reset-password/:id'.

like image 469
Diogenes Avatar asked Jan 02 '13 22:01

Diogenes


3 Answers

Late to the party ...

Instead of changing the whole text, you can just change the url with:

Meteor.startup(function() {
 Accounts.urls.resetPassword = function(token) {
    return Meteor.absoluteUrl('reset-password/' + token);
  };
});
like image 130
maersu Avatar answered Oct 17 '22 01:10

maersu


It has changed a little bit:

You have to use

Accounts.emailTemplates.resetPassword.text

For the url you can simply replace the hashbang instead of parsing the token from the url. As an example (in coffeescript):

Meteor.startup(() ->
  Accounts.emailTemplates.resetPassword.text = (user, url) ->
     url = url.replace('#/', '')
     return "Click this link to reset your password: " + url
)

ES6

Meteor.startup(() =>
  Accounts.emailTemplates.resetPassword.text = function(user, url) {
     url = url.replace('#/', '');
     return `Click this link to reset your password: ${url}`;
   }
);
like image 44
DerMambo Avatar answered Oct 17 '22 03:10

DerMambo


See the section on email templates in the Meteor docs:

resetPassword: An Object with two fields:

  • resetPassword.subject: A Function that takes a user object and returns a String for the subject line of a reset password email.
  • resetPassword.text: A Function that takes a user object and a url, and returns the body text for a reset password email.

You can customise which url is passed to the reset password email method:

Accounts.resetPassword.text = function(user, url) {
  return "Click this link to reset your password: /reset-password/" + myId;
}
like image 28
Rahul Avatar answered Oct 17 '22 02:10

Rahul