diff --git a/vendor/magento/module-csp/ViewModel/NonceProvider.php b/vendor/magento/module-csp/ViewModel/NonceProvider.php new file mode 100644 index 0000000000000..fe1acc9589017 --- /dev/null +++ b/vendor/magento/module-csp/ViewModel/NonceProvider.php @@ -0,0 +1,43 @@ +cspNonceProvider = $cspNonceProvider; + } + + /** + * Returns a nonce for the Content Security Policy (CSP) header. + * + * @return string + * @throws LocalizedException + */ + public function getNonce(): string + { + return $this->cspNonceProvider->generateNonce(); + } +} diff --git a/vendor/magento/module-csp/view/base/requirejs-config.js b/vendor/magento/module-csp/view/base/requirejs-config.js new file mode 100644 index 0000000000000..a9be6bb70ab9a --- /dev/null +++ b/vendor/magento/module-csp/view/base/requirejs-config.js @@ -0,0 +1,12 @@ +/** + * Copyright 2024 Adobe + * All Rights Reserved. + */ + +var config = { + map: { + '*': { + 'nonceInjector': 'Magento_Csp/js/nonce-injector' + } + } +}; diff --git a/vendor/magento/module-csp/view/base/templates/nonce/nonce.phtml b/vendor/magento/module-csp/view/base/templates/nonce/nonce.phtml new file mode 100644 index 0000000000000..49f7344fb36a3 --- /dev/null +++ b/vendor/magento/module-csp/view/base/templates/nonce/nonce.phtml @@ -0,0 +1,22 @@ +getNonceProvider(); + +?> + diff --git a/vendor/magento/module-csp/view/base/web/js/nonce-injector.js b/vendor/magento/module-csp/view/base/web/js/nonce-injector.js new file mode 100644 index 0000000000000..3a3ebd7552d6f --- /dev/null +++ b/vendor/magento/module-csp/view/base/web/js/nonce-injector.js @@ -0,0 +1,12 @@ +/** + * Copyright 2024 Adobe + * All Rights Reserved. + */ + +define('Magento_Csp/js/nonce-injector', [], function () { + 'use strict'; + + return function (config) { + window.cspNonce = config.nonce; + }; +});