diff --git a/flask_security/core.py b/flask_security/core.py index a086b37..509d2b6 100644 --- a/flask_security/core.py +++ b/flask_security/core.py @@ -293,7 +293,8 @@ class Security(object): endpoint='reset')(views.reset) def setup_confirmable(self, bp): - bp.route(self.confirm_url, endpoint='confirm')(views.confirm) + bp.route(self.confirm_url, + endpoint='confirm')(views.confirm) class ForgotPasswordForm(Form): diff --git a/flask_security/recoverable.py b/flask_security/recoverable.py index addb248..86cc424 100644 --- a/flask_security/recoverable.py +++ b/flask_security/recoverable.py @@ -73,6 +73,8 @@ def reset_by_token(token, email, password): security.datastore._save_model(user) + send_mail('Your password has been reset', user.email, 'reset_notice') + return user diff --git a/flask_security/utils.py b/flask_security/utils.py index e467c5d..da80ad8 100644 --- a/flask_security/utils.py +++ b/flask_security/utils.py @@ -17,7 +17,6 @@ from importlib import import_module from flask import url_for, flash, current_app, request, session, render_template from flask.ext.security.signals import user_registered, password_reset_requested -from werkzeug.exceptions import BadRequest def generate_token(): @@ -57,10 +56,8 @@ def find_redirect(key): result = (get_url(session.pop(key.lower(), None)) or get_url(current_app.config[key.upper()] or None) or '/') - try: - del session[key.lower()] - except: - pass + session.pop(key.lower(), None) + return result @@ -68,9 +65,11 @@ def config_value(app, key, default=None): return app.config.get('SECURITY_' + key.upper(), default) -def send_mail(subject, recipient, template, context): +def send_mail(subject, recipient, template, context=None): from flask.ext.mail import Message + context = context or {} + msg = Message(subject, sender=current_app.security.email_sender, recipients=[recipient]) @@ -118,10 +117,3 @@ def capture_reset_password_requests(reset_password_sent_at=None): yield users finally: password_reset_requested.disconnect(_on) - - -def get_arg_or_bad_request(context, name): - rv = context.get(name, None) - if not rv: - raise BadRequest() - return rv