From 649a6a5ff074497f05a93a6bd63255b1665767b0 Mon Sep 17 00:00:00 2001 From: Evan Sangaline Date: Fri, 2 Oct 2015 08:12:03 -0700 Subject: [PATCH 1/4] Add USER_URL_PREFIX which defaults to /user --- flask_user/settings.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/flask_user/settings.py b/flask_user/settings.py index 519093e2..c35105e3 100644 --- a/flask_user/settings.py +++ b/flask_user/settings.py @@ -53,19 +53,20 @@ def set_default_settings(user_manager, app_config): um.show_username_email_does_not_exist = sd('USER_SHOW_USERNAME_EMAIL_DOES_NOT_EXIST', um.enable_register) # Set default URLs - um.change_password_url = sd('USER_CHANGE_PASSWORD_URL', '/user/change-password') - um.change_username_url = sd('USER_CHANGE_USERNAME_URL', '/user/change-username') - um.confirm_email_url = sd('USER_CONFIRM_EMAIL_URL', '/user/confirm-email/') - um.email_action_url = sd('USER_EMAIL_ACTION_URL', '/user/email//') - um.forgot_password_url = sd('USER_FORGOT_PASSWORD_URL', '/user/forgot-password') - um.login_url = sd('USER_LOGIN_URL', '/user/sign-in') - um.logout_url = sd('USER_LOGOUT_URL', '/user/sign-out') - um.manage_emails_url = sd('USER_MANAGE_EMAILS_URL', '/user/manage-emails') - um.register_url = sd('USER_REGISTER_URL', '/user/register') - um.resend_confirm_email_url = sd('USER_RESEND_CONFIRM_EMAIL_URL', '/user/resend-confirm-email') - um.reset_password_url = sd('USER_RESET_PASSWORD_URL', '/user/reset-password/') - um.user_profile_url = sd('USER_PROFILE_URL', '/user/profile') - um.invite_url = sd('USER_INVITE_URL', '/user/invite') + um.url_prefix = sd('USER_URL_PREFIX', '/user') + um.change_password_url = sd('USER_CHANGE_PASSWORD_URL', um.url_prefix + '/change-password') + um.change_username_url = sd('USER_CHANGE_USERNAME_URL', um.url_prefix + '/change-username') + um.confirm_email_url = sd('USER_CONFIRM_EMAIL_URL', um.url_prefix + '/confirm-email/') + um.email_action_url = sd('USER_EMAIL_ACTION_URL', um.url_prefix + '/email//') + um.forgot_password_url = sd('USER_FORGOT_PASSWORD_URL', um.url_prefix + '/forgot-password') + um.login_url = sd('USER_LOGIN_URL', um.url_prefix + '/sign-in') + um.logout_url = sd('USER_LOGOUT_URL', um.url_prefix + '/sign-out') + um.manage_emails_url = sd('USER_MANAGE_EMAILS_URL', um.url_prefix + '/manage-emails') + um.register_url = sd('USER_REGISTER_URL', um.url_prefix + '/register') + um.resend_confirm_email_url = sd('USER_RESEND_CONFIRM_EMAIL_URL', um.url_prefix + '/resend-confirm-email') + um.reset_password_url = sd('USER_RESET_PASSWORD_URL', um.url_prefix + '/reset-password/') + um.user_profile_url = sd('USER_PROFILE_URL', um.url_prefix + '/profile') + um.invite_url = sd('USER_INVITE_URL', um.url_prefix + '/invite') # Set default ENDPOINTs home_endpoint = '' From 1ba5fbcba3555894bcfa04154041f7e9252fec6f Mon Sep 17 00:00:00 2001 From: Evan Sangaline Date: Fri, 2 Oct 2015 08:12:58 -0700 Subject: [PATCH 2/4] Add USER_URL_PREFIX to the documentation. --- docs/source/includes/config_urls.txt | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/source/includes/config_urls.txt b/docs/source/includes/config_urls.txt index e8ac8f54..8b67cf31 100644 --- a/docs/source/includes/config_urls.txt +++ b/docs/source/includes/config_urls.txt @@ -1,15 +1,16 @@ :: # URLs # Default - USER_CHANGE_PASSWORD_URL = '/user/change-password' - USER_CHANGE_USERNAME_URL = '/user/change-username' - USER_CONFIRM_EMAIL_URL = '/user/confirm-email/' - USER_EMAIL_ACTION_URL = '/user/email//' # v0.5.1 and up - USER_FORGOT_PASSWORD_URL = '/user/forgot-password' - USER_INVITE_URL = '/user/invite' # v0.6.2 and up - USER_LOGIN_URL = '/user/login' - USER_LOGOUT_URL = '/user/logout' - USER_MANAGE_EMAILS_URL = '/user/manage-emails' - USER_REGISTER_URL = '/user/register' - USER_RESEND_CONFIRM_EMAIL_URL = '/user/resend-confirm-email' # v0.5.0 and up - USER_RESET_PASSWORD_URL = '/user/reset-password/' + USER_URL_PREFIX = '/user' + USER_CHANGE_PASSWORD_URL = USER_URL_PREFIX + '/change-password' + USER_CHANGE_USERNAME_URL = USER_URL_PREFIX + '/change-username' + USER_CONFIRM_EMAIL_URL = USER_URL_PREFIX + '/confirm-email/' + USER_EMAIL_ACTION_URL = USER_URL_PREFIX + '/email//' # v0.5.1 and up + USER_FORGOT_PASSWORD_URL = USER_URL_PREFIX + '/forgot-password' + USER_INVITE_URL = USER_URL_PREFIX + '/invite' # v0.6.2 and up + USER_LOGIN_URL = USER_URL_PREFIX + '/login' + USER_LOGOUT_URL = USER_URL_PREFIX + '/logout' + USER_MANAGE_EMAILS_URL = USER_URL_PREFIX + '/manage-emails' + USER_REGISTER_URL = USER_URL_PREFIX + '/register' + USER_RESEND_CONFIRM_EMAIL_URL = USER_URL_PREFIX + '/resend-confirm-email' # v0.5.0 and up + USER_RESET_PASSWORD_URL = USER_URL_PREFIX + '/reset-password/' From c36d88d0ae2ad95441d6cf2628d532279209d9a5 Mon Sep 17 00:00:00 2001 From: Evan Sangaline Date: Tue, 12 Apr 2016 10:20:30 -0700 Subject: [PATCH 3/4] Remove redirect url determinations that aren't need. One wasn't used and the other should have been checking the query string for reg_next instead of next. --- flask_user/views.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/flask_user/views.py b/flask_user/views.py index 28f4e650..6bed8b74 100644 --- a/flask_user/views.py +++ b/flask_user/views.py @@ -442,11 +442,9 @@ def register(): # Redirect if USER_ENABLE_CONFIRM_EMAIL is set if user_manager.enable_confirm_email and require_email_confirmation: - next = request.args.get('next', _endpoint_url(user_manager.after_register_endpoint)) - return redirect(next) + return redirect(reg_next) # Auto-login after register or redirect to login page - next = request.args.get('next', _endpoint_url(user_manager.after_confirm_endpoint)) if user_manager.auto_login_after_register: return _do_login_user(user, reg_next) # auto-login else: From f547bba15b3a51e4236fc15f5e0300fb92f6fc8e Mon Sep 17 00:00:00 2001 From: Evan Sangaline Date: Tue, 12 Apr 2016 10:28:20 -0700 Subject: [PATCH 4/4] Fix the logic around auto-logging without email confirmation after registration. It was previously not respected when USER_ENABLE_LOGIN_WITHOUT_CONFIRM_EMAIL and USER_AUTO_LOGIN_AFTER_REGISTER were both set to True. --- flask_user/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flask_user/views.py b/flask_user/views.py index 6bed8b74..e7c62c0a 100644 --- a/flask_user/views.py +++ b/flask_user/views.py @@ -440,8 +440,8 @@ def register(): user=user, user_invite=user_invite) - # Redirect if USER_ENABLE_CONFIRM_EMAIL is set - if user_manager.enable_confirm_email and require_email_confirmation: + # Redirect if USER_ENABLE_CONFIRM_EMAIL is set and they can't login yet + if user_manager.enable_confirm_email and require_email_confirmation and not user_manager.enable_login_without_confirm_email: return redirect(reg_next) # Auto-login after register or redirect to login page