diff --git a/flask_user/emails.py b/flask_user/emails.py index 1bf066e6..3b1183ae 100644 --- a/flask_user/emails.py +++ b/flask_user/emails.py @@ -120,7 +120,8 @@ def send_password_changed_email(user): subject, html_message, text_message = _render_email( user_manager.password_changed_email_template, user=user, - app_name=user_manager.app_name) + app_name=user_manager.app_name, + app_root_url=user_manager.app_root_url) # Send email message using Flask-Mail user_manager.send_email_function(email, subject, html_message, text_message) @@ -159,7 +160,8 @@ def send_username_changed_email(user): # pragma: no cover subject, html_message, text_message = _render_email( user_manager.username_changed_email_template, user=user, - app_name=user_manager.app_name) + app_name=user_manager.app_name, + app_root_url=user_manager.app_root_url) # Send email message using Flask-Mail user_manager.send_email_function(email, subject, html_message, text_message) diff --git a/flask_user/settings.py b/flask_user/settings.py index a1780085..1a723617 100644 --- a/flask_user/settings.py +++ b/flask_user/settings.py @@ -19,6 +19,7 @@ def set_default_settings(user_manager, app_config): # General settings um.app_name = sd('USER_APP_NAME', 'AppName') + um.app_root_url = sd('USER_APP_ROOT_URL', False) # Set default features um.enable_change_password = sd('USER_ENABLE_CHANGE_PASSWORD', True) diff --git a/flask_user/templates/flask_user/emails/password_changed_message.html b/flask_user/templates/flask_user/emails/password_changed_message.html index def42b90..7ae31f77 100644 --- a/flask_user/templates/flask_user/emails/password_changed_message.html +++ b/flask_user/templates/flask_user/emails/password_changed_message.html @@ -3,6 +3,10 @@ {% block message %}
Your password has been changed.
{% if user_manager.enable_forgot_password %} -If you did not initiate this password change, click here to reset it.
+ {% if app_root_url %} +If you did not initiate this password change, click here to reset it.
+ {% else %} +If you did not initiate this password change, click here to reset it.
+ {% endif %} {% endif %} {% endblock %} diff --git a/flask_user/templates/flask_user/emails/password_changed_message.txt b/flask_user/templates/flask_user/emails/password_changed_message.txt index b7448e6b..66b8b440 100644 --- a/flask_user/templates/flask_user/emails/password_changed_message.txt +++ b/flask_user/templates/flask_user/emails/password_changed_message.txt @@ -5,7 +5,11 @@ Your password has been changed. {% if user_manager.enable_forgot_password -%} If you did not initiate this password change, click the link below to reset it. - {{ url_for('user.forgot_password', _external=True) }} + {% if app_root_url %} + {{app_root_url}}{{url_for('user.forgot_password')}} + {% else %} + {{ url_for('user.forgot_password', _external=True) }} + {% endif %} {% endif -%} {% endblock %} diff --git a/flask_user/templates/flask_user/emails/username_changed_message.html b/flask_user/templates/flask_user/emails/username_changed_message.html index f569fb2a..24c5154e 100644 --- a/flask_user/templates/flask_user/emails/username_changed_message.html +++ b/flask_user/templates/flask_user/emails/username_changed_message.html @@ -2,5 +2,11 @@ {% block message %}Your username has been changed.
-If you did not initiate this username change, please sign in (using your email address) and change your password.
+If you did not initiate this username change, please + {% if app_root_url %} + + {% else %} + + {% endif %} +sign in (using your email address) and change your password.
{% endblock %} diff --git a/flask_user/templates/flask_user/emails/username_changed_message.txt b/flask_user/templates/flask_user/emails/username_changed_message.txt index 1d4ee5c2..6617016a 100644 --- a/flask_user/templates/flask_user/emails/username_changed_message.txt +++ b/flask_user/templates/flask_user/emails/username_changed_message.txt @@ -4,7 +4,11 @@ Your username has been changed. If you did not initiate this username change, please sign in (using your email address) and change your password. + {% if app_root_url %} + {{app_root_url}}{{url_for('user.login')}} + {% else %} {{ url_for('user.login', _external=True) }} + {% endif %} {% endblock %} diff --git a/flask_user/views.py b/flask_user/views.py index 034bc36b..552c541b 100644 --- a/flask_user/views.py +++ b/flask_user/views.py @@ -199,6 +199,9 @@ def forgot_password(): # Generate reset password link token = user_manager.generate_token(int(user.get_id())) reset_password_link = url_for('user.reset_password', token=token, _external=True) + if user_manager.app_root_url: + reset_password_link = user_manager.app_root_url + url_for( + 'user.reset_password', token=token) # Send forgot password email emails.send_forgot_password_email(user, user_email, reset_password_link) @@ -501,6 +504,9 @@ def invite(): accept_invite_link = url_for('user.register', token=token, _external=True) + if user_manager.app_root_url: + accept_invite_link = user_manager.app_root_url + url_for( + 'user.register', token=token) # Store token if hasattr(db_adapter.UserInvitationClass, 'token'): @@ -654,6 +660,12 @@ def user_profile(): return render_template(user_manager.user_profile_template) +def _confirm_email_link(um, token): + if um.app_root_url: + return um.app_root_url + url_for('user.confirm_email', token=token) + return url_for('user.confirm_email', token=token, _external=True) + + def _send_registered_email(user, user_email, require_email_confirmation=True): user_manager = current_app.user_manager db_adapter = user_manager.db_adapter @@ -663,7 +675,7 @@ def _send_registered_email(user, user_email, require_email_confirmation=True): # Generate confirm email link object_id = user_email.id if user_email else int(user.get_id()) token = user_manager.generate_token(object_id) - confirm_email_link = url_for('user.confirm_email', token=token, _external=True) + confirm_email_link = _confirm_email_link(user_manager, token) # Send email emails.send_registered_email(user, user_email, confirm_email_link) @@ -685,7 +697,7 @@ def _send_confirm_email(user, user_email): # Generate confirm email link object_id = user_email.id if user_email else int(user.get_id()) token = user_manager.generate_token(object_id) - confirm_email_link = url_for('user.confirm_email', token=token, _external=True) + confirm_email_link = _confirm_email_link(user_manager, token) # Send email emails.send_confirm_email_email(user, user_email, confirm_email_link) diff --git a/setup.py b/setup.py index 702e31fb..f3e26319 100644 --- a/setup.py +++ b/setup.py @@ -87,7 +87,7 @@ setup( name='Flask-User', - version='0.6.1', + version='0.6.1+jcb.1', url='http://github.com/lingthio/Flask-User', license='BSD License', author='Ling Thio',