j1-template 2022.0.7 → 2022.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -55,7 +55,7 @@ regenerate: true
55
55
  {% assign toccer_defaults = modules.defaults.toccer.defaults %}
56
56
 
57
57
  {% assign cookie_defaults = modules.defaults.cookies.defaults %}
58
- {% assign cookie_settings = modules.cokkies.settings %}
58
+ {% assign cookie_settings = modules.cookies.settings %}
59
59
 
60
60
  {% assign themer_defaults = modules.defaults.themer.defaults %}
61
61
  {% assign themer_settings = modules.themer.settings %}
@@ -175,9 +175,6 @@ var j1 = (function () {
175
175
  var comment_provider = '{{comment_provider}}';
176
176
  var site_id = '{{site_id}}';
177
177
 
178
- // Default translator settings (currently NOT supported)
179
- // var translation_enabled = {{template_config.translation.enabled}};
180
-
181
178
  var current_user_data;
182
179
  var current_page;
183
180
  var previous_page;
@@ -309,7 +306,7 @@ var j1 = (function () {
309
306
  j1['xhrDOMState'] = {};
310
307
 
311
308
  // -----------------------------------------------------------------------
312
- // update cookies if browser window get closed
309
+ // final updates before browser page|tab
313
310
  // see: https://stackoverflow.com/questions/3888902/detect-browser-or-tab-closing
314
311
  // -----------------------------------------------------------------------
315
312
  window.addEventListener('beforeunload', function (event) {
@@ -322,49 +319,27 @@ var j1 = (function () {
322
319
  var url;
323
320
  var baseUrl;
324
321
 
325
- // final update of the user state cookie before browser page|tab
326
- // get closed
327
- if (user_state) {
328
- user_state.session_active = false;
329
- user_state.last_session_ts = timestamp_now;
322
+ // final update of the user state cookie
323
+ user_state.session_active = false;
324
+ user_state.last_session_ts = timestamp_now;
330
325
 
331
- if (!user_consent.analysis || !user_consent.personalization) {
332
- // rewrite consent|state cookies to session
333
- logger.debug('\n' + 'write to cookie : ' + cookie_names.user_consent);
334
- cookie_written = j1.writeCookie({
335
- name: cookie_names.user_consent,
336
- data: user_consent,
337
- secure: secure,
338
- expires: 0
339
- });
340
- if (!cookie_written) {
341
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_consent);
342
- }
343
- logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
344
- cookie_written = j1.writeCookie({
345
- name: cookie_names.user_state,
346
- data: user_state,
347
- secure: secure,
348
- expires: 0
349
- });
350
- if (!cookie_written) {
351
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_consent);
352
- }
353
- } else {
354
- logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
355
- cookie_written = j1.writeCookie({
356
- name: cookie_names.user_state,
357
- data: user_state,
358
- secure: secure,
359
- expires: 365
360
- });
361
- if (!cookie_written) {
362
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_state);
363
- }
364
- }
326
+ if (!user_consent.analysis || !user_consent.personalization) {
327
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
328
+
329
+ cookie_written = j1.writeCookie({
330
+ name: cookie_names.user_state,
331
+ data: user_state,
332
+ secure: secure,
333
+ expires: 0
334
+ });
365
335
  } else {
366
- // jadams, 2021-07-11: on beforeunload, a user state cookie is expected
367
- logger.error('\n' + 'missing cookie detected: ' + cookie_names.user_state);
336
+ logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
337
+ cookie_written = j1.writeCookie({
338
+ name: cookie_names.user_state,
339
+ data: user_state,
340
+ secure: secure,
341
+ expires: 365
342
+ });
368
343
  }
369
344
  }); // END beforeunload
370
345
 
@@ -383,9 +358,6 @@ var j1 = (function () {
383
358
  secure: secure,
384
359
  expires: 0
385
360
  });
386
- if (!cookie_written) {
387
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
388
- }
389
361
 
390
362
  user_state = j1.existsCookie(cookie_names.user_state)
391
363
  ? j1.readCookie(cookie_names.user_state)
@@ -395,96 +367,23 @@ var j1 = (function () {
395
367
  secure: secure,
396
368
  expires: 365
397
369
  });
398
- if (!cookie_written) {
399
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_state);
400
- }
401
370
 
402
- // jadams, 2021-07-11: Found situation that user_state NOT initialized
403
- // correctly (user_state == false).
404
- // TODO: Check if/why user state (cookie NOT created?) NOT initialized
405
- // for what reason.
371
+ // jadams, 2021-12-06: Access to cookies for this site failed.
372
+ // Possibly, a third-party domain or an attacker tries to access it.
406
373
  if (!user_state) {
407
- logger.error('\n' + 'cookie not found: ' + cookie_names.user_state);
374
+ logger.error('\n' + 'Access to cookie failed or cookie not found: ' + cookie_names.user_state);
408
375
  logger.debug('\n' + 'j1 cookies found:' + j1Cookies.length);
409
- j1Cookies.forEach(item => console.log('j1.core.switcher: ' + item));
410
- logger.debug('\n' + 'ga cookies found:' + gaCookies.length);
411
- gaCookies.forEach(item => console.log('j1.core.switcher: ' + item));
412
- user_state = j1.readCookie(cookie_names.user_state);
413
- user_state.session_active = true;
376
+ // redirect to error page: blocked content
377
+ window.location.href = '/446.html';
414
378
  }
415
379
 
416
380
  if (!user_consent.analysis || !user_consent.personalization) {
417
- // rewrite consent|state cookies to session
418
- logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
419
- cookie_written = j1.writeCookie({
420
- name: cookie_names.user_state,
421
- data: user_state,
422
- secure: secure,
423
- expires: 0
424
- });
425
- if (!cookie_written) {
426
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_state);
427
- }
428
- } else {
429
- logger.debug('\n' + 'write to cookie : ' + cookie_names.user_state);
430
- cookie_written = j1.writeCookie({
431
- name: cookie_names.user_state,
432
- data: user_state,
433
- secure: secure,
434
- expires: 365
435
- });
436
- if (!cookie_written) {
437
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_state);
438
- }
381
+ // expire permanent cookies to session
382
+ j1.expireCookie({ name: cookie_names.user_state });
383
+ j1.expireCookie({ name: cookie_names.user_consent });
384
+ j1.expireCookie({ name: cookie_names.user_translate });
439
385
  }
440
386
 
441
- // jadams, 2021-11-10: anchor links of type #void are used/managed
442
- // by the FAB module. No geneneraL use for NOW.
443
- // -----------------------------------------------------------------------
444
- // initialize event handler for smooth scroll on in-page anchors
445
- // $('a[href*=\\#]').on('click', function (event) {
446
- // // ignore void links
447
- // if (window.location.href.includes('#void')||this.href.includes('#void')) {
448
- // return false;
449
- // }
450
- // // for external links, redirect to this page
451
- // if (window.location.pathname !== this.pathname) {
452
- // window.location.href = this.href;
453
- // } else {
454
- // // continue on in-page anchor
455
- // var toccerScrollDuration = 300;
456
- // var toccerScrollOffset = 10;
457
- //
458
- // // calculate offset value for correct (smooth) scroll position
459
- // //
460
- // var $pagehead = $('.attic');
461
- // var $navbar = $('nav.navbar');
462
- // var $adblock = $('#adblock');
463
- // var navbarType = $navbar.hasClass('navbar-fixed') ? 'fixed' : 'scrolled';
464
- // var fontSize = $('body').css('font-size').replace('px','');
465
- // var start = window.pageYOffset;
466
- // var l = parseInt(fontSize);
467
- // var h = $pagehead.length ? $pagehead.height() : 0;
468
- // var n = $navbar.length ? $navbar.height() : 0;
469
- // var a = $adblock.length ? $adblock.height() : 0;
470
- // var scrollOffset = navbarType == 'fixed' ? -1*(n + a + l) : -1*(h + n + a + l);
471
- //
472
- // // TODO: to be checked why this static offset (toccerScrollOffset)
473
- // // is needed
474
- // scrollOffset = scrollOffset + toccerScrollOffset;
475
- //
476
- // logger.debug('\n' + 'scroll to anchor: ' + this.hash);
477
- // $("html, body").animate({
478
- // scrollTop: $($(this).attr("href")).offset().top + scrollOffset + "px"
479
- // }, {
480
- // duration: toccerScrollDuration,
481
- // easing: "swing"
482
- // });
483
- // // disable bubble up the event
484
- // return false;
485
- // } // End in-page link
486
- // }); // END click event on anchors
487
-
488
387
  // initialize event handler for window/history/back on <ESC>
489
388
  // -----------------------------------------------------------------------
490
389
  window.onkeyup = function (event) {
@@ -523,10 +422,6 @@ var j1 = (function () {
523
422
  expires: 0
524
423
  });
525
424
 
526
- if (!cookie_written) {
527
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
528
- }
529
-
530
425
  j1.setState(curr_state);
531
426
  logger.info('\n' + 'state: ' + j1.getState());
532
427
 
@@ -570,9 +465,6 @@ var j1 = (function () {
570
465
  secure: secure,
571
466
  expires: 0
572
467
  });
573
- if (!cookie_written) {
574
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
575
- }
576
468
 
577
469
  j1.setState(curr_state);
578
470
  logger.info('\n' + 'state: ' + j1.getState());
@@ -601,7 +493,8 @@ var j1 = (function () {
601
493
  themeName = user_session.theme_name;
602
494
  themeCss = user_session.theme_css;
603
495
 
604
- // save last page access
496
+ // -----------------------------------------------------------------------
497
+ // Save last page access
605
498
  // see: https://stackoverflow.com/questions/3528324/how-to-get-the-previous-url-in-javascript
606
499
  // see: https://developer.mozilla.org/de/docs/Web/API/Window/history
607
500
  //
@@ -633,10 +526,6 @@ var j1 = (function () {
633
526
  expires: 0
634
527
  });
635
528
 
636
- if (!cookie_written) {
637
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
638
- }
639
-
640
529
  // NOTE: asynchronous calls should be rewitten to xhrData
641
530
  // initialize page resources for blocks
642
531
  j1.initBanner(settings);
@@ -645,7 +534,6 @@ var j1 = (function () {
645
534
 
646
535
  state = 'running';
647
536
  logger.info('\n' + 'state: ' + state);
648
- // logger.info(logText);
649
537
 
650
538
  user_session.timestamp = timestamp_now;
651
539
  logger.debug('\n' + 'write to cookie : ' + cookie_names.user_session);
@@ -655,9 +543,6 @@ var j1 = (function () {
655
543
  secure: secure,
656
544
  expires: 0
657
545
  });
658
- if (!cookie_written) {
659
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
660
- }
661
546
 
662
547
  // -----------------------------------------------------------------------
663
548
  // additional BS helpers from j1.core
@@ -779,7 +664,6 @@ var j1 = (function () {
779
664
  // initPanel()
780
665
  // AJAX fetcher to load and place all panel used for a page
781
666
  // -------------------------------------------------------------------------
782
- // ToDo:
783
667
  initPanel: function ( options ) {
784
668
  var logger = log4javascript.getLogger('j1.initPanel');
785
669
  var panel = [];
@@ -1003,16 +887,14 @@ var j1 = (function () {
1003
887
  secure: secure,
1004
888
  expires: 0
1005
889
  });
1006
- if (!cookie_written) {
1007
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
1008
- }
1009
890
 
1010
891
  providerPermissions = user_session.provider_permissions;
1011
892
  categoryAllowed = providerPermissions.includes(user_session.page_permission);
1012
893
 
894
+ // -------------------------------------------------------------------
1013
895
  // check protected pages (applies for APP only)
1014
896
  // make sure that protected pages are ALWAYS checked for permissions
1015
- // -------------------------------------------------------------------
897
+ //
1016
898
  if (
1017
899
  j1.authEnabled() &&
1018
900
  user_session.page_permission !== 'public' &&
@@ -1115,13 +997,7 @@ var j1 = (function () {
1115
997
  $('#quickLinksCookieButton').css('display', 'none');
1116
998
  }
1117
999
 
1118
- // show|hide translator icon (currently NOT supported)
1119
- // if (translation_enabled) {
1120
- // logger.info('\n' + 'translator detected: google');
1121
- // logger.info('\n' + 'initialize language selector');
1122
- // $('.goog-te-combo').addClass('form-control');
1123
- // }
1124
-
1000
+ // -----------------------------------------------------------------
1125
1001
  // show cc icon (currently NOT supported)
1126
1002
  // $('#quickLinksControlCenterButton').css('display', 'block');
1127
1003
 
@@ -1296,16 +1172,6 @@ var j1 = (function () {
1296
1172
  secure: secure,
1297
1173
  expires: 0
1298
1174
  });
1299
- if (!cookie_written) {
1300
- logger.error('\n' + 'failed to write cookie: ' + cookie_names.user_session);
1301
- }
1302
-
1303
- // show|hide translator icon (currently NOT supported)
1304
- // if (translation_enabled) {
1305
- // logger.info('\n' + 'translator detected: google');
1306
- // logger.info('\n' + 'initialize language selector');
1307
- // $('.goog-te-combo').addClass('form-control');
1308
- // }
1309
1175
 
1310
1176
  // show cc icon (currently NOT supported)
1311
1177
  // $('#quickLinksControlCenterButton').css('display', 'block');
@@ -1441,6 +1307,7 @@ var j1 = (function () {
1441
1307
 
1442
1308
  return scrollOffset;
1443
1309
  },
1310
+
1444
1311
  // -------------------------------------------------------------------------
1445
1312
  // scrollTo()
1446
1313
  // Scrolls smooth to any anchor referenced by an page URL on
@@ -1745,9 +1612,14 @@ var j1 = (function () {
1745
1612
  // context/HTTPS).
1746
1613
  // -------------------------------------------------------------------------
1747
1614
  writeCookie: function (options /*name, data, [path, expires, domain, samesite, http_only, secure]*/) {
1748
- var date = new Date();
1749
- var timestamp_now = date.toISOString();
1750
- var cookie_data = {};
1615
+ var date = new Date();
1616
+ var timestamp_now = date.toISOString()
1617
+ var url = new liteURL(window.location.href);
1618
+ var baseUrl = url.origin;;
1619
+ var hostname = url.hostname;
1620
+ var domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
1621
+ var domain_enabled = '{{cookie_options.domain}}';
1622
+ var cookie_data = {};
1751
1623
  var data_json;
1752
1624
  var data_encoded;
1753
1625
  var expires;
@@ -1758,12 +1630,11 @@ var j1 = (function () {
1758
1630
  name: '',
1759
1631
  path: '{{cookie_options.path}}',
1760
1632
  expires: '{{cookie_options.expires}}',
1761
- domain: '{{cookie_options.domain}}',
1633
+ domain: 'localhost',
1762
1634
  samesite: '{{cookie_options.same_site}}',
1763
1635
  http_only: '{{cookie_options.http_only}}',
1764
1636
  secure: '{{cookie_options.secure}}'
1765
1637
  };
1766
-
1767
1638
  var settings = $.extend(defaults, options);
1768
1639
 
1769
1640
  cookie_data.timestamp = timestamp_now;
@@ -1788,6 +1659,16 @@ var j1 = (function () {
1788
1659
 
1789
1660
  stringifiedAttributes += '; ' + 'SameSite=' + settings.samesite;
1790
1661
 
1662
+ // settings.domain = settings.domain ? '.' + domain : hostname;
1663
+
1664
+ if (domain != hostname) {
1665
+ settings.domain = domain_enabled ? '.' + domain : hostname;
1666
+ } else {
1667
+ settings.domain = hostname;
1668
+ }
1669
+
1670
+ stringifiedAttributes += '; ' + 'domain=' + settings.domain;
1671
+
1791
1672
  if (settings.secure) {
1792
1673
  stringifiedAttributes += '; ' + 'secure=' + settings.secure;
1793
1674
  }
@@ -1859,13 +1740,26 @@ var j1 = (function () {
1859
1740
  // to JavaScript. For that reason, attributes needs to be set explicitly.
1860
1741
  // -------------------------------------------------------------------------
1861
1742
  expireCookie: function (options /*name [,path, samesite, secure]*/) {
1743
+ var url = new liteURL(window.location.href);
1744
+ var baseUrl = url.origin;;
1745
+ var hostname = url.hostname;
1746
+ var domain = hostname.substring(hostname.lastIndexOf('.', hostname.lastIndexOf('.') - 1) + 1);
1747
+ var domain_enabled = '{{cookie_options.domain}}';
1748
+
1862
1749
  var defaults = {
1863
1750
  path: '/',
1864
1751
  samesite: 'Lax',
1865
1752
  secure: false
1866
1753
  };
1754
+
1867
1755
  var settings = $.extend(defaults, options);
1868
1756
 
1757
+ if (domain != hostname) {
1758
+ settings.domain = domain_enabled ? '.' + domain : hostname;
1759
+ } else {
1760
+ settings.domain = hostname;
1761
+ }
1762
+
1869
1763
  var dc = document.cookie; // all cookies in page
1870
1764
  var end = dc.length; // default to end of the string
1871
1765
  var prefix = settings.name + '='; // search string for the cookie name given
@@ -1894,9 +1788,9 @@ var j1 = (function () {
1894
1788
  // expire cookie to session
1895
1789
  content = decodeURI(dc.substring(begin + prefix.length, end) ).replace(/"/g, '');
1896
1790
  if (settings.secure) {
1897
- document.cookie = settings.name + '=' + content +'; path=' + settings.path + '; ' + 'SameSite=' + settings.samesite + '; secure';
1791
+ document.cookie = settings.name + '=' + content +'; path=' + settings.path + '; ' + 'SameSite=' + settings.samesite + '; ' + 'Domain=' + settings.domain + '; secure' + '; ';
1898
1792
  } else {
1899
- document.cookie = settings.name + '=' + content +'; path=' + settings.path + '; ' + 'SameSite=' + settings.samesite;
1793
+ document.cookie = settings.name + '=' + content +'; path=' + settings.path + '; ' + 'SameSite=' + settings.samesite + '; ' + 'Domain=' + settings.domain + '; ';
1900
1794
  }
1901
1795
 
1902
1796
  return true;