diff --git a/rhodecode/login/views.py b/rhodecode/login/views.py --- a/rhodecode/login/views.py +++ b/rhodecode/login/views.py @@ -326,7 +326,17 @@ class LoginView(object): error_dict = {'recaptcha_field': _msg} raise formencode.Invalid(_msg, _value, None, error_dict=error_dict) - UserModel().reset_password_link(form_result) + + # Generate reset URL and send mail. + user_email = form_result['email'] + user = User.get_by_email(user_email) + password_reset_url = self.request.route_url( + 'reset_password_confirmation', + _query={'key': user.api_key}) + UserModel().reset_password_link( + form_result, password_reset_url) + + # Display success message and redirect. self.session.flash( _('Your password reset link was sent'), queue='success') diff --git a/rhodecode/model/user.py b/rhodecode/model/user.py --- a/rhodecode/model/user.py +++ b/rhodecode/model/user.py @@ -493,7 +493,7 @@ class UserModel(BaseModel): log.error(traceback.format_exc()) raise - def reset_password_link(self, data): + def reset_password_link(self, data, pwd_reset_url): from rhodecode.lib.celerylib import tasks, run_task from rhodecode.model.notification import EmailNotificationModel user_email = data['email'] @@ -502,12 +502,8 @@ class UserModel(BaseModel): if user: log.debug('password reset user found %s', user) - password_reset_url = url( - 'reset_password_confirmation', key=user.api_key, - qualified=True) - email_kwargs = { - 'password_reset_url': password_reset_url, + 'password_reset_url': pwd_reset_url, 'user': user, 'email': user_email, 'date': datetime.datetime.now()