diff --git a/datamodels/2.x/itop-hub-connector/datamodel.itop-hub-connector.xml b/datamodels/2.x/itop-hub-connector/datamodel.itop-hub-connector.xml
index ed51bf64b..b5e085857 100644
--- a/datamodels/2.x/itop-hub-connector/datamodel.itop-hub-connector.xml
+++ b/datamodels/2.x/itop-hub-connector/datamodel.itop-hub-connector.xml
@@ -15,12 +15,13 @@
https://www.itophub.io
- /my-instances/landing-from-remote
- /stateless-remote-itop/landing-from-remote-stateless
- /api/messages
- /api/messages/mark-all-as-read
- /messages
+ /my-instances/landing-from-remote
+ /stateless-remote-itop/landing-from-remote-stateless
+ /api/messages
+ /api/messages/mark-all-as-read
+ /messages../pages/exec.php?exec_module=itop-hub-connector&exec_page=launch.php&target=inform_after_setup
+ https://www.itophub.io/page/data-privacy
diff --git a/dictionaries/cs.dictionary.itop.ui.php b/dictionaries/cs.dictionary.itop.ui.php
index 4ef65dfbd..5eb2c9444 100755
--- a/dictionaries/cs.dictionary.itop.ui.php
+++ b/dictionaries/cs.dictionary.itop.ui.php
@@ -472,6 +472,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Maintenance~~',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)~~',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'Množství',
'UI:GroupBy:Count+' => 'Množství prvků',
'UI:CountOfObjects' => 'Počet objektů odpovídajícíh ktritériím: %1$d',
diff --git a/dictionaries/da.dictionary.itop.ui.php b/dictionaries/da.dictionary.itop.ui.php
index 0de5a64fb..e0f6d77b7 100644
--- a/dictionaries/da.dictionary.itop.ui.php
+++ b/dictionaries/da.dictionary.itop.ui.php
@@ -461,6 +461,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Maintenance~~',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)~~',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'Antal',
'UI:GroupBy:Count+' => 'Antal af elementer',
'UI:CountOfObjects' => '%1$d objekter opfylder kriteriet.',
diff --git a/dictionaries/de.dictionary.itop.ui.php b/dictionaries/de.dictionary.itop.ui.php
index f8523f883..6a188cda6 100644
--- a/dictionaries/de.dictionary.itop.ui.php
+++ b/dictionaries/de.dictionary.itop.ui.php
@@ -461,6 +461,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Wartung',
'UI:Error:InvalidToken' => 'Error: The angeforderte Operation wurde bereits ausgeführt (CSRF-Token nicht gefunden)',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'Anzahl',
'UI:GroupBy:Count+' => 'Anzahl der Elemente',
'UI:CountOfObjects' => '%1$d Objekte, die das Kriterium erfüllen.',
diff --git a/dictionaries/en.dictionary.itop.ui.php b/dictionaries/en.dictionary.itop.ui.php
index 25f46d6d8..6ae7fc667 100644
--- a/dictionaries/en.dictionary.itop.ui.php
+++ b/dictionaries/en.dictionary.itop.ui.php
@@ -477,6 +477,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Maintenance',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)',
+
'UI:GroupBy:Count' => 'Count',
'UI:GroupBy:Count+' => 'Number of elements',
'UI:CountOfObjects' => '%1$d objects matching the criteria.',
diff --git a/dictionaries/es_cr.dictionary.itop.ui.php b/dictionaries/es_cr.dictionary.itop.ui.php
index 628eeb5cf..31ccb483d 100644
--- a/dictionaries/es_cr.dictionary.itop.ui.php
+++ b/dictionaries/es_cr.dictionary.itop.ui.php
@@ -473,6 +473,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Mantenimiento',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)~~',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'Cuenta',
'UI:GroupBy:Count+' => 'Número de Elementos',
'UI:CountOfObjects' => '%1$d Elementos cumplen Criterio.',
diff --git a/dictionaries/fr.dictionary.itop.ui.php b/dictionaries/fr.dictionary.itop.ui.php
index c18cacb2a..e537b632b 100644
--- a/dictionaries/fr.dictionary.itop.ui.php
+++ b/dictionaries/fr.dictionary.itop.ui.php
@@ -461,6 +461,8 @@ Nous espérons que vous aimerez cette version autant que nous avons eu du plaisi
'UI:Error:MaintenanceTitle' => 'Maintenance',
'UI:Error:InvalidToken' => 'Erreur: l\'opération a déjà été effectuée (CSRF token not found)',
+ 'UI:Error:SMTP:UnknownVendor' => 'Le provider SMTP Oauth 2.0 %1$s n\'existe pas',
+
'UI:GroupBy:Count' => 'Nombre',
'UI:GroupBy:Count+' => 'Nombre d\'éléments',
'UI:CountOfObjects' => '%1$d objets correspondants aux critères.',
diff --git a/dictionaries/hu.dictionary.itop.ui.php b/dictionaries/hu.dictionary.itop.ui.php
index d9ca1cc94..8a1514f10 100755
--- a/dictionaries/hu.dictionary.itop.ui.php
+++ b/dictionaries/hu.dictionary.itop.ui.php
@@ -461,6 +461,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Maintenance~~',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)~~',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'Számossága',
'UI:GroupBy:Count+' => '',
'UI:CountOfObjects' => '%1$d darab objektum felel meg a kritériumoknak.',
diff --git a/dictionaries/it.dictionary.itop.ui.php b/dictionaries/it.dictionary.itop.ui.php
index 2b2476f3f..855282309 100644
--- a/dictionaries/it.dictionary.itop.ui.php
+++ b/dictionaries/it.dictionary.itop.ui.php
@@ -472,6 +472,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Maintenance~~',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)~~',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'Conteggio',
'UI:GroupBy:Count+' => '',
'UI:CountOfObjects' => '%1$d oggetti corrispondenti ai criteri.',
diff --git a/dictionaries/ja.dictionary.itop.ui.php b/dictionaries/ja.dictionary.itop.ui.php
index 6f8c19300..463eb43de 100644
--- a/dictionaries/ja.dictionary.itop.ui.php
+++ b/dictionaries/ja.dictionary.itop.ui.php
@@ -461,6 +461,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Maintenance~~',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)~~',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'カウント',
'UI:GroupBy:Count+' => '要素数',
'UI:CountOfObjects' => '%1$d 個のオブジェクトが条件にマッチしました。',
diff --git a/dictionaries/nl.dictionary.itop.ui.php b/dictionaries/nl.dictionary.itop.ui.php
index 3988f291b..4aca72485 100644
--- a/dictionaries/nl.dictionary.itop.ui.php
+++ b/dictionaries/nl.dictionary.itop.ui.php
@@ -472,6 +472,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Onderhoud',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)~~',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'Aantal',
'UI:GroupBy:Count+' => 'Aantal objecten',
'UI:CountOfObjects' => '%1$d objecten voldoen aan de criteria.',
diff --git a/dictionaries/pt_br.dictionary.itop.ui.php b/dictionaries/pt_br.dictionary.itop.ui.php
index a6ff0e28c..cb0b57fbb 100644
--- a/dictionaries/pt_br.dictionary.itop.ui.php
+++ b/dictionaries/pt_br.dictionary.itop.ui.php
@@ -472,6 +472,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Manutenção',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)~~',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'Número',
'UI:GroupBy:Count+' => 'Número de elementos',
'UI:CountOfObjects' => '%1$d objetos correspondem aos critérios.',
diff --git a/dictionaries/ru.dictionary.itop.ui.php b/dictionaries/ru.dictionary.itop.ui.php
index 51a3e0d81..384fb5a9f 100644
--- a/dictionaries/ru.dictionary.itop.ui.php
+++ b/dictionaries/ru.dictionary.itop.ui.php
@@ -473,6 +473,8 @@ Dict::Add('RU RU', 'Russian', 'Русский', array(
'UI:Error:MaintenanceTitle' => 'Техническое обслуживание',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)~~',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'Количество',
'UI:GroupBy:Count+' => 'Количество элементов',
'UI:CountOfObjects' => '%1$d объектов соответствует критериям.',
diff --git a/dictionaries/sk.dictionary.itop.ui.php b/dictionaries/sk.dictionary.itop.ui.php
index 300d084cb..a0ef197eb 100644
--- a/dictionaries/sk.dictionary.itop.ui.php
+++ b/dictionaries/sk.dictionary.itop.ui.php
@@ -462,6 +462,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Maintenance~~',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)~~',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'Počet',
'UI:GroupBy:Count+' => '',
'UI:CountOfObjects' => '%1$d objekt/y/ov sa nezhoduje s kritériami.',
diff --git a/dictionaries/tr.dictionary.itop.ui.php b/dictionaries/tr.dictionary.itop.ui.php
index a0cf9a51a..896f7823c 100644
--- a/dictionaries/tr.dictionary.itop.ui.php
+++ b/dictionaries/tr.dictionary.itop.ui.php
@@ -472,6 +472,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => 'Maintenance~~',
'UI:Error:InvalidToken' => 'Error: the requested operation has already been performed (CSRF token not found)~~',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => 'Say',
'UI:GroupBy:Count+' => 'Eleman sayısı',
'UI:CountOfObjects' => 'Kritere uyan %1$d nesne bulundu.',
diff --git a/dictionaries/zh_cn.dictionary.itop.ui.php b/dictionaries/zh_cn.dictionary.itop.ui.php
index a1f3fd83c..a7b41a9a0 100644
--- a/dictionaries/zh_cn.dictionary.itop.ui.php
+++ b/dictionaries/zh_cn.dictionary.itop.ui.php
@@ -477,6 +477,8 @@ We hope you’ll enjoy this version as much as we enjoyed imagining and creating
'UI:Error:MaintenanceTitle' => '维护',
'UI:Error:InvalidToken' => 'Error: 所请求的操作已执行 (未发现 CSRF token )',
+ 'UI:Error:SMTP:UnknownVendor' => 'OAuth SMTP provider %1$s does not exist (email_transport_smtp.oauth.provider)~~',
+
'UI:GroupBy:Count' => '个数',
'UI:GroupBy:Count+' => '项目数',
'UI:CountOfObjects' => '%1$d 个对象符合指定的条件.',
diff --git a/js/wizardhelper.js b/js/wizardhelper.js
index c31f8ea87..152361514 100644
--- a/js/wizardhelper.js
+++ b/js/wizardhelper.js
@@ -176,6 +176,9 @@ function WizardHelper(sClass, sFormPrefix, sState, sInitialState, sStimulus) {
var sString = "$('#"+aRefreshed[i]+"').trigger('change').trigger('update');";
window.setTimeout(sString, 1); // Synchronous 'trigger' does nothing, call it asynchronously
}
+ if($('.blockUI').length == 0) {
+ $('.disabledDuringFieldLoading').prop("disabled", false).removeClass('disabledDuringFieldLoading');
+ }
};
this.UpdateWizard = function () {
@@ -201,6 +204,10 @@ function WizardHelper(sClass, sFormPrefix, sState, sInitialState, sStimulus) {
function (html) {
$('#ajax_content').html(html);
$('.blockUI').parent().unblock();
+
+ if($('.blockUI').length == 0) {
+ $('.disabledDuringFieldLoading').prop("disabled", false).removeClass('disabledDuringFieldLoading');
+ }
}
);
};
@@ -235,6 +242,7 @@ function WizardHelper(sClass, sFormPrefix, sState, sInitialState, sStimulus) {
this.ResetQuery();
this.UpdateWizard();
+ var fieldForm=null;
while (index < aFieldNames.length)
{
sAttCode = aFieldNames[index];
@@ -247,11 +255,16 @@ function WizardHelper(sClass, sFormPrefix, sState, sInitialState, sStimulus) {
message: '',
overlayCSS: {backgroundColor: '#f1f1f1', opacity: 0.3}
});
+ fieldForm=$('#field_' + sFieldId).closest('form');
this.RequestAllowedValues(sAttCode);
}
index++;
}
+ if(fieldForm!=null){
+ fieldForm.find('button[type=submit]:not(:disabled)').prop("disabled", true).addClass('disabledDuringFieldLoading');
+ }
+
if (nbOfFieldsToUpdate > 0)
{
this.AjaxQueryServer();
diff --git a/lib/autoload.php b/lib/autoload.php
index f37a5b80e..743c6b6d6 100644
--- a/lib/autoload.php
+++ b/lib/autoload.php
@@ -2,6 +2,11 @@
// autoload.php @generated by Composer
+if (PHP_VERSION_ID < 50600) {
+ echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+ exit(1);
+}
+
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit5e7efdfe4e8f9526eb41991410b96239::getLoader();
diff --git a/lib/composer/ClassLoader.php b/lib/composer/ClassLoader.php
index 0cd6055d1..afef3fa2a 100644
--- a/lib/composer/ClassLoader.php
+++ b/lib/composer/ClassLoader.php
@@ -149,7 +149,7 @@ class ClassLoader
/**
* @return string[] Array of classname => path
- * @psalm-var array
+ * @psalm-return array
*/
public function getClassMap()
{
diff --git a/lib/composer/InstalledVersions.php b/lib/composer/InstalledVersions.php
index 7c5502ca4..e7552a4a9 100644
--- a/lib/composer/InstalledVersions.php
+++ b/lib/composer/InstalledVersions.php
@@ -21,6 +21,8 @@ use Composer\Semver\VersionParser;
* See also https://getcomposer.org/doc/07-runtime.md#installed-versions
*
* To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
*/
class InstalledVersions
{
diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php
index 52d64443b..5b2c5f136 100644
--- a/lib/composer/autoload_classmap.php
+++ b/lib/composer/autoload_classmap.php
@@ -2,7 +2,7 @@
// autoload_classmap.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
diff --git a/lib/composer/autoload_files.php b/lib/composer/autoload_files.php
index 7be757bea..ae02e5199 100644
--- a/lib/composer/autoload_files.php
+++ b/lib/composer/autoload_files.php
@@ -2,25 +2,25 @@
// autoload_files.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
- '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
'5255c38a0faeba867671b61dfda6d864' => $vendorDir . '/paragonie/random_compat/lib/random.php',
'023d27dca8066ef29e6739335ea73bad' => $vendorDir . '/symfony/polyfill-php70/bootstrap.php',
- '32dcc8afd4335739640db7d200c1971d' => $vendorDir . '/symfony/polyfill-apcu/bootstrap.php',
- '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
- 'bd9634f2d41831496de0d3dfe4c94881' => $vendorDir . '/symfony/polyfill-php56/bootstrap.php',
+ '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
'7e9bd612cc444b3eed788ebbe46263a0' => $vendorDir . '/laminas/laminas-zendframework-bridge/src/autoload.php',
'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
'25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
+ 'bd9634f2d41831496de0d3dfe4c94881' => $vendorDir . '/symfony/polyfill-php56/bootstrap.php',
'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
+ '32dcc8afd4335739640db7d200c1971d' => $vendorDir . '/symfony/polyfill-apcu/bootstrap.php',
'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php',
+ '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
'2c102faa651ef8ea5874edb585946bce' => $vendorDir . '/swiftmailer/swiftmailer/lib/swift_required.php',
);
diff --git a/lib/composer/autoload_namespaces.php b/lib/composer/autoload_namespaces.php
index d12922d08..e6117c750 100644
--- a/lib/composer/autoload_namespaces.php
+++ b/lib/composer/autoload_namespaces.php
@@ -2,7 +2,7 @@
// autoload_namespaces.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
diff --git a/lib/composer/autoload_psr4.php b/lib/composer/autoload_psr4.php
index ca8b4b9f6..651c9f0c1 100644
--- a/lib/composer/autoload_psr4.php
+++ b/lib/composer/autoload_psr4.php
@@ -2,7 +2,7 @@
// autoload_psr4.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php
index 4713e836b..6a9b7049a 100644
--- a/lib/composer/autoload_static.php
+++ b/lib/composer/autoload_static.php
@@ -8,21 +8,21 @@ class ComposerStaticInit5e7efdfe4e8f9526eb41991410b96239
{
public static $files = array (
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
- '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
'5255c38a0faeba867671b61dfda6d864' => __DIR__ . '/..' . '/paragonie/random_compat/lib/random.php',
'023d27dca8066ef29e6739335ea73bad' => __DIR__ . '/..' . '/symfony/polyfill-php70/bootstrap.php',
- '32dcc8afd4335739640db7d200c1971d' => __DIR__ . '/..' . '/symfony/polyfill-apcu/bootstrap.php',
- '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
- 'bd9634f2d41831496de0d3dfe4c94881' => __DIR__ . '/..' . '/symfony/polyfill-php56/bootstrap.php',
+ '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
'7e9bd612cc444b3eed788ebbe46263a0' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/autoload.php',
'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
'25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
+ 'bd9634f2d41831496de0d3dfe4c94881' => __DIR__ . '/..' . '/symfony/polyfill-php56/bootstrap.php',
'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
+ '32dcc8afd4335739640db7d200c1971d' => __DIR__ . '/..' . '/symfony/polyfill-apcu/bootstrap.php',
'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php',
+ '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
'2c102faa651ef8ea5874edb585946bce' => __DIR__ . '/..' . '/swiftmailer/swiftmailer/lib/swift_required.php',
);
diff --git a/lib/composer/include_paths.php b/lib/composer/include_paths.php
index d4fb96718..af33c1491 100644
--- a/lib/composer/include_paths.php
+++ b/lib/composer/include_paths.php
@@ -2,7 +2,7 @@
// include_paths.php @generated by Composer
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
diff --git a/lib/guzzlehttp/guzzle/CHANGELOG.md b/lib/guzzlehttp/guzzle/CHANGELOG.md
index 95d26df21..cd3db22d8 100644
--- a/lib/guzzlehttp/guzzle/CHANGELOG.md
+++ b/lib/guzzlehttp/guzzle/CHANGELOG.md
@@ -1,5 +1,10 @@
# Change Log
+## 6.5.7 - 2022-06-09
+
+* Fix failure to strip Authorization header on HTTP downgrade
+* Fix failure to strip the Cookie header on change in host or HTTP downgrade
+
## 6.5.6 - 2022-05-25
* Fix cross-domain cookie leakage
diff --git a/lib/guzzlehttp/guzzle/src/RedirectMiddleware.php b/lib/guzzlehttp/guzzle/src/RedirectMiddleware.php
index e4644b7ac..fd86c60a7 100644
--- a/lib/guzzlehttp/guzzle/src/RedirectMiddleware.php
+++ b/lib/guzzlehttp/guzzle/src/RedirectMiddleware.php
@@ -141,7 +141,7 @@ class RedirectMiddleware
}
/**
- * Check for too many redirects
+ * Check for too many redirects.
*
* @return void
*
@@ -190,7 +190,7 @@ class RedirectMiddleware
$modify['body'] = '';
}
- $uri = $this->redirectUri($request, $response, $protocols);
+ $uri = self::redirectUri($request, $response, $protocols);
if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
$idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
$uri = Utils::idnUriConvert($uri, $idnOptions);
@@ -210,16 +210,42 @@ class RedirectMiddleware
$modify['remove_headers'][] = 'Referer';
}
- // Remove Authorization header if host is different.
- if ($request->getUri()->getHost() !== $modify['uri']->getHost()) {
+ // Remove Authorization and Cookie headers if required.
+ if (self::shouldStripSensitiveHeaders($request->getUri(), $modify['uri'])) {
$modify['remove_headers'][] = 'Authorization';
+ $modify['remove_headers'][] = 'Cookie';
}
return Psr7\modify_request($request, $modify);
}
/**
- * Set the appropriate URL on the request based on the location header
+ * Determine if we should strip sensitive headers from the request.
+ *
+ * We return true if either of the following conditions are true:
+ *
+ * 1. the host is different;
+ * 2. the scheme has changed, and now is non-https.
+ *
+ * @return bool
+ */
+ private static function shouldStripSensitiveHeaders(
+ UriInterface $originalUri,
+ UriInterface $modifiedUri
+ ) {
+ if (strcasecmp($originalUri->getHost(), $modifiedUri->getHost()) !== 0) {
+ return true;
+ }
+
+ if ($originalUri->getScheme() !== $modifiedUri->getScheme() && 'https' !== $modifiedUri->getScheme()) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Set the appropriate URL on the request based on the location header.
*
* @param RequestInterface $request
* @param ResponseInterface $response
@@ -227,7 +253,7 @@ class RedirectMiddleware
*
* @return UriInterface
*/
- private function redirectUri(
+ private static function redirectUri(
RequestInterface $request,
ResponseInterface $response,
array $protocols
diff --git a/setup/wizardsteps.class.inc.php b/setup/wizardsteps.class.inc.php
index 448439b8c..939dc9e05 100644
--- a/setup/wizardsteps.class.inc.php
+++ b/setup/wizardsteps.class.inc.php
@@ -695,6 +695,13 @@ class WizStepLicense extends WizardStep
return array('class' => 'WizStepDBParams', 'state' => '');
}
+ private function NeedsRgpdConsent()
+ {
+ $sMode = $this->oWizard->GetParameter('install_mode');
+ $aModules = SetupUtils::AnalyzeInstallation($this->oWizard);
+ return $sMode == 'install' && !SetupUtils::IsProductVersion($aModules);
+ }
+
/**
* @param WebPage $oPage
*/
@@ -728,8 +735,31 @@ CSS
$oPage->add('');
$oPage->add('');
$sChecked = ($this->oWizard->GetParameter('accept_license', 'no') == 'yes') ? ' checked ' : '';
- $oPage->add('');
- $oPage->add_ready_script('$("#accept").bind("click change", function() { WizardUpdateButtons(); });');
+ $oPage->add('');
+ if ($this->NeedsRgpdConsent()) {
+ $oPage->add('
iTop software is compliant with the processing of personal data according to the European General Data Protection Regulation (GDPR).
+By installing iTop you agree that some information will be collected by Combodo to help you manage your instances and for statistical purposes.
+This data remains anonymous until it is associated to a user account on iTop Hub.
+