diff --git a/app/assets/javascripts/discourse/app/controllers/invites-show.js b/app/assets/javascripts/discourse/app/controllers/invites-show.js index 0a6574e9ffd..6606c42965e 100644 --- a/app/assets/javascripts/discourse/app/controllers/invites-show.js +++ b/app/assets/javascripts/discourse/app/controllers/invites-show.js @@ -212,6 +212,17 @@ export default Controller.extend( @discourseComputed ssoPath: () => getUrl("/session/sso"), + @discourseComputed("authOptions.associate_url", "authOptions.auth_provider") + associateHtml(url, provider) { + if (!url) { + return; + } + return I18n.t("create_account.associate", { + associate_link: url, + provider: I18n.t(`login.${provider}.name`), + }); + }, + actions: { submit() { const userFields = this.userFields; diff --git a/app/assets/javascripts/discourse/app/templates/invites/show.hbs b/app/assets/javascripts/discourse/app/templates/invites/show.hbs index a38a7116c6f..4fbe0db6ced 100644 --- a/app/assets/javascripts/discourse/app/templates/invites/show.hbs +++ b/app/assets/javascripts/discourse/app/templates/invites/show.hbs @@ -20,6 +20,12 @@

{{i18n "invites.invited_by"}}

{{user-info user=invitedBy}}

+ {{#if associateHtml}} + + {{/if}} + {{#unless isInviteLink}}

{{html-safe yourEmailMessage}} diff --git a/app/assets/javascripts/discourse/tests/acceptance/invite-accept-test.js b/app/assets/javascripts/discourse/tests/acceptance/invite-accept-test.js index 0aecb13f9aa..432f5c37e33 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/invite-accept-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/invite-accept-test.js @@ -451,3 +451,30 @@ acceptance( }); } ); + +acceptance( + "Invite link with authentication data, and associate link", + function (needs) { + needs.settings({ enable_local_logins: false }); + + setAuthenticationData(needs.hooks, { + auth_provider: "facebook", + email: "blah@example.com", + email_valid: true, + username: "foobar", + name: "barfoo", + associate_url: "/associate/abcde", + }); + + test("shows the associate link", async function (assert) { + preloadInvite({ link: true }); + + await visit("/invites/myvalidinvitetoken"); + + assert.ok( + exists(".create-account-associate-link"), + "shows the associate account link" + ); + }); + } +);