From bcd6efa98c6d9fa7d3d5cc46f42174e3ab0abecc Mon Sep 17 00:00:00 2001 From: Martin Brennan Date: Tue, 23 Mar 2021 09:02:07 +1000 Subject: [PATCH] FIX: Never display the invite show page form if DiscourseConnect enabled (#12466) This form does not need to show if discourse connect is enabled because generally the fields that would be filled in here are filled in by the SSO provider. There is also an issue right now where enable_local_logins and enable_discourse_connect can be true at the same time which is not right. --- .../discourse/app/controllers/invites-show.js | 5 +++-- .../tests/acceptance/invite-accept-test.js | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/app/controllers/invites-show.js b/app/assets/javascripts/discourse/app/controllers/invites-show.js index 384b7da3d7c..f7cf803380f 100644 --- a/app/assets/javascripts/discourse/app/controllers/invites-show.js +++ b/app/assets/javascripts/discourse/app/controllers/invites-show.js @@ -107,8 +107,9 @@ export default Controller.extend( ) shouldDisplayForm(externalAuthsOnly, authOptions, emailValidationFailed) { return ( - this.siteSettings.enable_local_logins || - (externalAuthsOnly && authOptions && !emailValidationFailed) + (this.siteSettings.enable_local_logins || + (externalAuthsOnly && authOptions && !emailValidationFailed)) && + !this.siteSettings.enable_discourse_connect ); }, 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 472e9cb50c5..bba5f57c050 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/invite-accept-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/invite-accept-test.js @@ -217,6 +217,23 @@ acceptance( } ); +acceptance( + "Invite accept when DiscourseConnect SSO is enabled and local login is enabled (bad config)", + function (needs) { + needs.settings({ + enable_local_logins: true, + enable_discourse_connect: true, + }); + + test("invite link", async function (assert) { + preloadInvite({ link: true }); + + await visit("/invites/myvalidinvitetoken"); + assert.ok(!exists("form"), "does not display the form"); + }); + } +); + acceptance("Invite link with authentication data", function (needs) { needs.settings({ enable_local_logins: false });