diff --git a/app/assets/javascripts/miq_api.js b/app/assets/javascripts/miq_api.js index ff4fae778cb..8bd7619d235 100644 --- a/app/assets/javascripts/miq_api.js +++ b/app/assets/javascripts/miq_api.js @@ -49,8 +49,6 @@ API.post = withData('POST'); API.put = withData('PUT'); - var base64encode = window.btoa; // browser api - API.login = function(login, password) { API.logout(); diff --git a/app/javascript/packs/compat-common.js b/app/javascript/packs/compat-common.js new file mode 100644 index 00000000000..4567fdaadcf --- /dev/null +++ b/app/javascript/packs/compat-common.js @@ -0,0 +1,8 @@ +import base64js from 'base64-js'; +import TextEncoderLite from 'text-encoder-lite'; + +// utf8-capable window.btoa +window.base64encode = (str, encoding = 'utf-8') => { + let bytes = new (TextEncoder || TextEncoderLite)(encoding).encode(str); + return base64js.fromByteArray(bytes); +}; diff --git a/app/views/layouts/login.html.haml b/app/views/layouts/login.html.haml index 1da31406e7b..ecc23782aff 100644 --- a/app/views/layouts/login.html.haml +++ b/app/views/layouts/login.html.haml @@ -11,6 +11,12 @@ = javascript_include_tag 'miq_debug' = stylesheet_link_tag 'miq_debug' + = javascript_pack_tag 'vendor' + -# FIXME: the conditional below is a temporary fix for a webpacker issue, remove when it's resolved + - unless Rails.env.test? + - Webpacker::Manifest.instance.data.keys.each do |pack| + = javascript_pack_tag pack if pack.ends_with? '-common.js' + = render :partial => 'layouts/i18n_js' %body{:class => ::Settings.server.custom_login_logo ? 'whitelabel' : ''} diff --git a/package.json b/package.json index 25499b97e42..eeb33690eb9 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,10 @@ "@angular/core": "~4.0.3", "@angular/platform-browser": "~4.0.3", "@angular/platform-browser-dynamic": "~4.0.3", + "base64-js": "~1.2.3", "core-js": "~2.4.1", "rxjs": "~5.3.0", + "text-encoder-lite": "~1.0.1", "ui-select": "0.19.8", "zone.js": "~0.8.5" },