diff --git a/app/controllers/join_codes_controller.rb b/app/controllers/join_codes_controller.rb index a3aa501fc..14785e2f8 100644 --- a/app/controllers/join_codes_controller.rb +++ b/app/controllers/join_codes_controller.rb @@ -12,18 +12,18 @@ class JoinCodesController < ApplicationController def create identity = Identity.find_or_create_by!(email_address: params.expect(:email_address)) - unless identity.member_of?(@join_code.account) - @join_code.redeem do |account| - identity.join(account) - end + @join_code.redeem { |account| identity.join(account) } unless identity.member_of?(@join_code.account) + + if identity == Current.identity + redirect_to landing_url(script_name: @join_code.account.slug) + else + terminate_session if Current.identity magic_link = identity.send_magic_link flash[:magic_link_code] = magic_link&.code if Rails.env.development? session[:return_to_after_authenticating] = new_users_join_url(script_name: @join_code.account.slug) - redirect_to session_magic_link_path - else - redirect_to landing_url(script_name: @join_code.account.slug) + redirect_to session_magic_link_url(script_name: nil) end end diff --git a/app/models/filter/resources.rb b/app/models/filter/resources.rb index f5988fc14..3521b43e3 100644 --- a/app/models/filter/resources.rb +++ b/app/models/filter/resources.rb @@ -12,6 +12,7 @@ module Filter::Resources def resource_removed(resource) kind = resource.class.model_name.plural send "#{kind}=", send(kind).without(resource) + @boards = nil empty? ? destroy! : save! rescue ActiveRecord::RecordNotUnique destroy! diff --git a/test/controllers/join_codes_controller_test.rb b/test/controllers/join_codes_controller_test.rb index bc78be4df..173e3b5d2 100644 --- a/test/controllers/join_codes_controller_test.rb +++ b/test/controllers/join_codes_controller_test.rb @@ -34,12 +34,13 @@ class JoinCodesControllerTest < ActionDispatch::IntegrationTest end end - assert_redirected_to session_magic_link_path + assert_redirected_to session_magic_link_url(script_name: nil) assert_equal new_users_join_url(script_name: @account.slug), session[:return_to_after_authenticating] end test "create for existing identity" do identity = identities(:jz) + sign_in_as :jz assert_no_difference -> { Identity.count } do assert_no_difference -> { User.count } do