FIX: allows authentication data to be present in bootstrap (#13885)

FIX: allows authentication data to be present in bootstrap (#13885)

diff --git a/app/assets/javascripts/discourse/lib/bootstrap-json/index.js b/app/assets/javascripts/discourse/lib/bootstrap-json/index.js
index f062d50..802454b 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(`<meta name="theme-color" content="${bootstrap.theme_color}">`);
   }
 
+  if (bootstrap.authentication_data) {
+    buffer.push(
+      `<meta id="data-authentication" data-authentication-data="${encode(
+        bootstrap.authentication_data
+      )}">`
+    );
+  }
+
   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 4f2f40a..7c6c519 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 cd61f71..b11e093 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

GitHub sha: 74f0631acd4dfb6030ee272ed4d839276cf1e0ea

This commit appears in #13885 which was approved by davidtaylorhq. It was merged by jjaffeux.