Redirect after saving settings in case the username has changed

Fixes #3059
This commit is contained in:
Tom Hughes 2021-01-19 18:24:41 +00:00
parent d58b74a685
commit 812f5b44e8
3 changed files with 31 additions and 4 deletions

View file

@ -52,7 +52,7 @@ Lint/DuplicateBranch:
# Offense count: 487
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
Metrics/AbcSize:
Max: 194
Max: 234
# Offense count: 62
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
@ -92,7 +92,7 @@ Metrics/PerceivedComplexity:
# Offense count: 365
Minitest/MultipleAssertions:
Max: 81
Max: 97
# Offense count: 4
Naming/AccessorMethodName:

View file

@ -128,6 +128,7 @@ class UsersController < ApplicationController
(params[:user][:auth_provider] == current_user.auth_provider &&
params[:user][:auth_uid] == current_user.auth_uid)
update_user(current_user, params)
redirect_to user_account_url(current_user) if current_user.errors.count.zero?
else
session[:new_user_settings] = params
redirect_to auth_url(params[:user][:auth_provider], params[:user][:auth_uid])
@ -461,6 +462,8 @@ class UsersController < ApplicationController
update_user(current_user, settings)
flash.discard
session[:user_errors] = current_user.errors.as_json
redirect_to :action => "account", :display_name => current_user.display_name
@ -655,12 +658,12 @@ class UsersController < ApplicationController
set_locale(:reset => true)
if user.new_email.blank? || user.new_email == user.email
flash.now[:notice] = t "users.account.flash update success"
flash[:notice] = t "users.account.flash update success"
else
user.email = user.new_email
if user.valid?
flash.now[:notice] = t "users.account.flash update success confirm needed"
flash[:notice] = t "users.account.flash update success confirm needed"
begin
UserMailer.email_confirm(user, user.tokens.create).deliver_later

View file

@ -953,6 +953,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
user.description = "new description"
user.preferred_editor = "default"
post user_account_path(user), :params => { :user => user.attributes }
assert_response :redirect
assert_redirected_to user_account_url(user)
get user_account_path(user)
assert_response :success
assert_template :account
assert_select "div#errorExplanation", false
@ -971,6 +974,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
# Changing to a valid editor should work
user.preferred_editor = "id"
post user_account_path(user), :params => { :user => user.attributes }
assert_response :redirect
assert_redirected_to user_account_url(user)
get user_account_path(user)
assert_response :success
assert_template :account
assert_select "div#errorExplanation", false
@ -980,6 +986,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
# Changing to the default editor should work
user.preferred_editor = "default"
post user_account_path(user), :params => { :user => user.attributes }
assert_response :redirect
assert_redirected_to user_account_url(user)
get user_account_path(user)
assert_response :success
assert_template :account
assert_select "div#errorExplanation", false
@ -989,6 +998,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
# Changing to an uploaded image should work
image = Rack::Test::UploadedFile.new("test/gpx/fixtures/a.gif", "image/gif")
post user_account_path(user), :params => { :avatar_action => "new", :user => user.attributes.merge(:avatar => image) }
assert_response :redirect
assert_redirected_to user_account_url(user)
get user_account_path(user)
assert_response :success
assert_template :account
assert_select "div#errorExplanation", false
@ -997,6 +1009,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
# Changing to a gravatar image should work
post user_account_path(user), :params => { :avatar_action => "gravatar", :user => user.attributes }
assert_response :redirect
assert_redirected_to user_account_url(user)
get user_account_path(user)
assert_response :success
assert_template :account
assert_select "div#errorExplanation", false
@ -1005,6 +1020,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
# Removing the image should work
post user_account_path(user), :params => { :avatar_action => "delete", :user => user.attributes }
assert_response :redirect
assert_redirected_to user_account_url(user)
get user_account_path(user)
assert_response :success
assert_template :account
assert_select "div#errorExplanation", false
@ -1037,6 +1055,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
# Changing name to one that doesn't exist should work
new_attributes = user.attributes.dup.merge(:display_name => "new tester")
post user_account_path(user), :params => { :user => new_attributes }
assert_response :redirect
assert_redirected_to user_account_url(:display_name => "new tester")
get user_account_path(:display_name => "new tester")
assert_response :success
assert_template :account
assert_select "div#errorExplanation", false
@ -1079,6 +1100,9 @@ class UsersControllerTest < ActionDispatch::IntegrationTest
post user_account_path(user), :params => { :user => user.attributes }
end
end
assert_response :redirect
assert_redirected_to user_account_url(user)
get user_account_path(user)
assert_response :success
assert_template :account
assert_select "div#errorExplanation", false