From 4d5b142f1d8ca16e731690b8b44dd47a25218182 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Wed, 8 Jan 2020 16:13:12 +0000 Subject: [PATCH] DEV: Allow `doLogin` to be called with a set of parameters This can be used for themes/plugins to specify additional URL parameters to be used when starting authentication. Example usage: ``` LoginMethod.findAll()[0].doLogin({params: {mydata: "myvalue"}}); ``` --- .../javascripts/discourse/models/login-method.js.es6 | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/models/login-method.js.es6 b/app/assets/javascripts/discourse/models/login-method.js.es6 index 84b4cf4a523..2a3ab489c4b 100644 --- a/app/assets/javascripts/discourse/models/login-method.js.es6 +++ b/app/assets/javascripts/discourse/models/login-method.js.es6 @@ -21,7 +21,7 @@ const LoginMethod = EmberObject.extend({ return this.message_override || I18n.t(`login.${this.name}.message`); }, - doLogin({ reconnect = false } = {}) { + doLogin({ reconnect = false, params = {} } = {}) { if (this.customLogin) { this.customLogin(); return Promise.resolve(); @@ -35,7 +35,15 @@ const LoginMethod = EmberObject.extend({ let authUrl = Discourse.getURL(`/auth/${this.name}`); if (reconnect) { - authUrl += "?reconnect=true"; + params["reconnect"] = true; + } + + const paramKeys = Object.keys(params); + if (paramKeys.length > 0) { + authUrl += "?"; + authUrl += paramKeys + .map(k => `${encodeURIComponent(k)}=${encodeURIComponent(params[k])}`) + .join("&"); } return LoginMethod.buildPostForm(authUrl).then(form => form.submit());