From a964e62cd8e26f942630abbee478007feffa8688 Mon Sep 17 00:00:00 2001 From: Jan Cernik <66427541+jancernik@users.noreply.github.com> Date: Mon, 25 Nov 2024 18:06:14 -0300 Subject: [PATCH] FIX: Discourse Connect fixes for full page login (#29915) --- .../discourse/app/controllers/login.js | 9 ++- .../discourse/app/controllers/signup.js | 14 +++-- .../instance-initializers/auth-complete.js | 1 + .../javascripts/discourse/app/routes/login.js | 3 +- .../discourse/app/templates/login.hbs | 4 +- spec/system/page_objects/modals/signup.rb | 12 ++++ spec/system/page_objects/pages/signup.rb | 12 ++++ spec/system/social_authentication_spec.rb | 61 +++++++++++++++++++ 8 files changed, 106 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/discourse/app/controllers/login.js b/app/assets/javascripts/discourse/app/controllers/login.js index 25ac5b110ef..11ece210557 100644 --- a/app/assets/javascripts/discourse/app/controllers/login.js +++ b/app/assets/javascripts/discourse/app/controllers/login.js @@ -116,8 +116,15 @@ export default class LoginPageController extends Controller { return getURL("/u/admin-login"); } + get shouldTriggerRouteAction() { + return ( + !this.siteSettings.experimental_full_page_login || + this.siteSettings.enable_discourse_connect + ); + } + @action - showLoginPage() { + showFullPageLogin() { this.showLogin = true; } diff --git a/app/assets/javascripts/discourse/app/controllers/signup.js b/app/assets/javascripts/discourse/app/controllers/signup.js index f6c20c7a877..944fcefc8ff 100644 --- a/app/assets/javascripts/discourse/app/controllers/signup.js +++ b/app/assets/javascripts/discourse/app/controllers/signup.js @@ -54,12 +54,6 @@ export default class SignupPageController extends Controller.extend( } this.fetchConfirmationValue(); - - if (this.skipConfirmation) { - this.performAccountCreation().finally(() => - this.set("skipConfirmation", false) - ); - } } @bind @@ -342,6 +336,14 @@ export default class SignupPageController extends Controller.extend( return this._hpPromise; } + handleSkipConfirmation() { + if (this.skipConfirmation) { + this.performAccountCreation().finally(() => + this.set("skipConfirmation", false) + ); + } + } + performAccountCreation() { if ( !this._challengeDate || diff --git a/app/assets/javascripts/discourse/app/instance-initializers/auth-complete.js b/app/assets/javascripts/discourse/app/instance-initializers/auth-complete.js index 3cbe7b093e7..506178ab7ba 100644 --- a/app/assets/javascripts/discourse/app/instance-initializers/auth-complete.js +++ b/app/assets/javascripts/discourse/app/instance-initializers/auth-complete.js @@ -146,6 +146,7 @@ export default { Object.keys(createAccountProps || {}).forEach((key) => { signupController.set(key, createAccountProps[key]); }); + signupController.handleSkipConfirmation(); }); } else { modal.show(CreateAccount, { model: createAccountProps }); diff --git a/app/assets/javascripts/discourse/app/routes/login.js b/app/assets/javascripts/discourse/app/routes/login.js index e1acb0f0a83..4732bdfa2b2 100644 --- a/app/assets/javascripts/discourse/app/routes/login.js +++ b/app/assets/javascripts/discourse/app/routes/login.js @@ -11,7 +11,8 @@ export default class LoginRoute extends DiscourseRoute { beforeModel() { if ( !this.siteSettings.login_required && - !this.siteSettings.experimental_full_page_login + (!this.siteSettings.experimental_full_page_login || + this.siteSettings.enable_discourse_connect) ) { this.router .replaceWith(`/${defaultHomepage()}`) diff --git a/app/assets/javascripts/discourse/app/templates/login.hbs b/app/assets/javascripts/discourse/app/templates/login.hbs index b04c4640238..cdcd7318c93 100644 --- a/app/assets/javascripts/discourse/app/templates/login.hbs +++ b/app/assets/javascripts/discourse/app/templates/login.hbs @@ -161,9 +161,9 @@