From 7dc8f8b794cbb36b14737710ccfe417d1c074d12 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Mon, 2 Aug 2021 17:57:52 +0100 Subject: [PATCH] FEATURE: Allow linking an existing account during external-auth signup When a user signs up via an external auth method, a new link is added to the signup modal which allows them to connect an existing Discourse account. This will only happen if: - There is at least 1 other auth method available and - The current auth method permits users to disconnect/reconnect their accounts themselves --- .../app/controllers/create-account.js | 11 ++++ .../app/templates/modal/create-account.hbs | 5 ++ .../create-account-external-test.js | 55 ++++++++++++++++--- .../users/associate_accounts_controller.rb | 2 +- .../users/omniauth_callbacks_controller.rb | 20 +++++-- config/locales/client.en.yml | 1 + .../omniauth_callbacks_controller_spec.rb | 13 +++++ 7 files changed, 92 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/discourse/app/controllers/create-account.js b/app/assets/javascripts/discourse/app/controllers/create-account.js index b2e9622923b..52a3f7230a7 100644 --- a/app/assets/javascripts/discourse/app/controllers/create-account.js +++ b/app/assets/javascripts/discourse/app/controllers/create-account.js @@ -407,6 +407,17 @@ export default Controller.extend( } }, + @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: { externalLogin(provider) { this.login.send("externalLogin", provider, { signup: true }); diff --git a/app/assets/javascripts/discourse/app/templates/modal/create-account.hbs b/app/assets/javascripts/discourse/app/templates/modal/create-account.hbs index 846bee341d3..c33f956d23f 100644 --- a/app/assets/javascripts/discourse/app/templates/modal/create-account.hbs +++ b/app/assets/javascripts/discourse/app/templates/modal/create-account.hbs @@ -16,6 +16,11 @@
+ {{#if associateHtml}} + + {{/if}}