[!!!][BUGFIX] Allow browser notifications only on encrypted connection 16/55916/7
authorFrank Naegler <frank.naegler@typo3.org>
Tue, 27 Feb 2018 09:36:36 +0000 (10:36 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Wed, 28 Feb 2018 16:28:20 +0000 (17:28 +0100)
Google Chrome deprecated the browser notification API for unencrypted
origins. For this reason we now use an additional check to prevent
deprecation warnings in the console and disable this feature for
instances without SSL/TLS.

Resolves: #83971
Releases: master, 8.7
Change-Id: I9721842159e7ad3da9e5f4ee93a9bce3eaf5d0eb
Reviewed-on: https://review.typo3.org/55916
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
Reviewed-by: Sascha Egerer <sascha@sascha-egerer.de>
Tested-by: Sascha Egerer <sascha@sascha-egerer.de>
Reviewed-by: Josef Glatz <josef.glatz@typo3.org>
Tested-by: Josef Glatz <josef.glatz@typo3.org>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
typo3/sysext/backend/Resources/Public/JavaScript/LoginRefresh.js
typo3/sysext/core/Documentation/Changelog/master/Breaking-83971-ConsoleShowDeprecationWarningInChrome.rst [new file with mode: 0644]

index 4f0817b..3bd56d0 100644 (file)
@@ -164,7 +164,7 @@ define(['jquery', 'TYPO3/CMS/Backend/Notification', 'bootstrap'], function($, Ty
     LoginRefresh.$timeoutModal.modal(LoginRefresh.options.modalConfig);
     LoginRefresh.fillProgressbar(LoginRefresh.$timeoutModal);
 
-    if (typeof Notification !== 'undefined' && Notification.permission === 'granted' && !LoginRefresh.isPageActive()) {
+    if (document.location.protocol === 'https:' && typeof Notification !== 'undefined' && Notification.permission === 'granted' && !LoginRefresh.isPageActive()) {
       LoginRefresh.webNotification = new Notification(TYPO3.lang['mess.login_about_to_expire_title'], {
         body: TYPO3.lang['mess.login_about_to_expire'],
         icon: '/typo3/sysext/backend/Resources/Public/Images/Logo.png'
@@ -492,7 +492,7 @@ define(['jquery', 'TYPO3/CMS/Backend/Notification', 'bootstrap'], function($, Ty
 
     LoginRefresh.startTask();
 
-    if (typeof Notification !== 'undefined' && Notification.permission !== 'granted') {
+    if (document.location.protocol === 'https:' && typeof Notification !== 'undefined' && Notification.permission !== 'granted') {
       Notification.requestPermission();
     }
   };
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-83971-ConsoleShowDeprecationWarningInChrome.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-83971-ConsoleShowDeprecationWarningInChrome.rst
new file mode 100644 (file)
index 0000000..b851362
--- /dev/null
@@ -0,0 +1,36 @@
+.. include:: ../../Includes.txt
+
+===================================================================================
+Breaking: #83971 - Browser Notification API only works on SSL encrypted connections
+===================================================================================
+
+See :issue:`83971`
+
+Description
+===========
+
+Google Chrome has deprecated the JavaScript Notification API for unencrypted connections, which
+triggers warnings. Due to this TYPO3 does not use the LoginRefresh notification here anymore.
+
+See https://goo.gl/rStTGz for more details.
+
+
+Impact
+======
+
+The browser notifications for expired login only works on HTTPS.
+
+
+Affected Installations
+======================
+
+Any installation which does not use HTTPS.
+
+
+Migration
+=========
+
+Use SSL / HTTPS for the installation and the Notification API will work just like before.
+
+
+.. index:: Backend, JavaScript, NotScanned, ext:backend