From 74f0631acd4dfb6030ee272ed4d839276cf1e0ea Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Thu, 29 Jul 2021 15:01:11 +0200 Subject: [PATCH] FIX: allows authentication data to be present in bootstrap (#13885) --- .../discourse/lib/bootstrap-json/index.js | 8 ++++++++ app/controllers/bootstrap_controller.rb | 3 ++- spec/requests/bootstrap_controller_spec.rb | 12 ++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/lib/bootstrap-json/index.js b/app/assets/javascripts/discourse/lib/bootstrap-json/index.js index f062d504f0..802454bf90 100644 --- a/app/assets/javascripts/discourse/lib/bootstrap-json/index.js +++ b/app/assets/javascripts/discourse/lib/bootstrap-json/index.js @@ -45,6 +45,14 @@ function head(buffer, bootstrap) { buffer.push(``); } + if (bootstrap.authentication_data) { + buffer.push( + `` + ); + } + let setupData = ""; Object.keys(bootstrap.setup_data).forEach((sd) => { let val = bootstrap.setup_data[sd]; diff --git a/app/controllers/bootstrap_controller.rb b/app/controllers/bootstrap_controller.rb index 4f2f40af89..7c6c519261 100644 --- a/app/controllers/bootstrap_controller.rb +++ b/app/controllers/bootstrap_controller.rb @@ -67,7 +67,8 @@ class BootstrapController < ApplicationController theme_html: create_theme_html, html_classes: html_classes, html_lang: html_lang, - login_path: main_app.login_path + login_path: main_app.login_path, + authentication_data: authentication_data } bootstrap[:extra_locales] = extra_locales if extra_locales.present? bootstrap[:csrf_token] = form_authenticity_token if current_user diff --git a/spec/requests/bootstrap_controller_spec.rb b/spec/requests/bootstrap_controller_spec.rb index cd61f71114..b11e09330f 100644 --- a/spec/requests/bootstrap_controller_spec.rb +++ b/spec/requests/bootstrap_controller_spec.rb @@ -81,4 +81,16 @@ describe BootstrapController do expect(response.status).to eq(200) expect(response.parsed_body).to be_present end + + context "authentication data is present" do + it "returns authentication data" do + cookie_data = 'someauthenticationdata' + cookies['authentication_data'] = cookie_data + + get "/bootstrap.json" + + bootstrap = response.parsed_body['bootstrap'] + expect(bootstrap['authentication_data']).to eq(cookie_data) + end + end end