FIX: Correctly load the invites model when using full page logins (#29713)

This commit is contained in:
Jan Cernik 2024-11-13 08:56:16 -03:00 committed by GitHub
parent 00196b8652
commit 920fa4c248
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 28 additions and 4 deletions

View File

@ -1,4 +1,5 @@
import { service } from "@ember/service";
import { ajax } from "discourse/lib/ajax";
import PreloadStore from "discourse/lib/preload-store";
import DiscourseRoute from "discourse/routes/discourse";
import { deepMerge } from "discourse-common/lib/object";
@ -17,7 +18,9 @@ export default class InvitesShow extends DiscourseRoute {
deepMerge(params, json)
);
} else {
return {};
return ajax(`/invites/${params.token}`).then((json) =>
deepMerge(params, json)
);
}
}

View File

@ -547,11 +547,12 @@ class InvitesController < ApplicationController
info[:username] = current_user.username
end
store_preloaded("invite_info", MultiJson.dump(info))
secure_session["invite-key"] = invite.invite_key
render layout: "application"
respond_to do |format|
format.html { store_preloaded("invite_info", MultiJson.dump(info)) }
format.json { render_json_dump(info) }
end
end
def show_irredeemable_invite(invite)

View File

@ -259,6 +259,26 @@ shared_examples "signup scenarios" do |signup_page_object, login_page_object|
expect(page).to have_css(".header-dropdown-toggle.current-user")
end
end
it "correctly loads the invites page" do
inviter = Fabricate(:user)
invite = Fabricate(:invite, email: "johndoe@example.com", invited_by: inviter)
visit "/invites/#{invite.invite_key}?t=#{invite.email_token}"
expect(page).to have_css(".invited-by .user-info[data-username='#{inviter.username}']")
find(".invitation-cta__sign-in").click
if page.has_css?(".d-modal.login-modal", wait: 0)
if page.has_css?("html.mobile-view", wait: 0)
expect(page).to have_css(".d-modal:not(.is-animating)")
end
find(".d-modal .modal-close").click
else
page.go_back
end
expect(page).to have_css(".invited-by .user-info[data-username='#{inviter.username}']")
end
end
describe "Signup", type: :system do