From c29c78e7f99693457e88b9725514791b8e9aca58 Mon Sep 17 00:00:00 2001 From: "Peter Droogmans (attiks)" Date: Wed, 1 Jun 2022 15:38:35 +0200 Subject: [PATCH 1/4] feat: Add export --- composer.json | 1 + composer.lock | 205 ++++++- composer.patches.json | 3 + config/core.extension.yml | 4 + config/views.view.files_used_in_nodes.yml | 632 +++++++++++++++++++++- 5 files changed, 842 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index 159757255..f82cd3fb0 100755 --- a/composer.json +++ b/composer.json @@ -82,6 +82,7 @@ "drupal/twig_tweak": "^2.8", "drupal/user_expire": "^1.0", "drupal/variationcache": "^1.0", + "drupal/views_data_export": "^1.1", "drupal/viewsreference": "^2.0.0", "drupal/webform": "^6.1.2", "drush/drush": "^10.0.0", diff --git a/composer.lock b/composer.lock index 67ab66e14..9da2613c6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "efc61b2d086ae93043425ea3fb31915b", + "content-hash": "9e6af235d7be5d7e6a4c82cb56ffb684", "packages": [ { "name": "algolia/places", @@ -2656,6 +2656,56 @@ }, "time": "2022-05-25T18:43:19+00:00" }, + { + "name": "drupal/csv_serialization", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/csv_serialization.git", + "reference": "8.x-2.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/csv_serialization-8.x-2.0.zip", + "reference": "8.x-2.0", + "shasum": "3531383a6926a4ed761be56553997c2a937449ac" + }, + "require": { + "drupal/core": "^8 || ^9", + "league/csv": "^9.1" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "drupal/coder": "^8.3" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.0", + "datestamp": "1612801962", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Matthew Grasmick", + "homepage": "https://www.drupal.org/user/455714" + } + ], + "description": "Provides CSV as a serialization format.", + "homepage": "https://www.drupal.org/project/csv_serialization", + "support": { + "source": "http://cgit.drupalcode.org/csv_serialization", + "issues": "https://www.drupal.org/project/issues/csv_serialization" + } + }, { "name": "drupal/ctools", "version": "3.7.0", @@ -5962,6 +6012,75 @@ "issues": "https://drupal.org/project/issues/variationcache" } }, + { + "name": "drupal/views_data_export", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/views_data_export.git", + "reference": "8.x-1.1" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/views_data_export-8.x-1.1.zip", + "reference": "8.x-1.1", + "shasum": "8ee9d441e69b5861ab12286246522d52613f4e61" + }, + "require": { + "drupal/core": "^8.8 || ^9", + "drupal/csv_serialization": "~1.4 || ~2.0" + }, + "require-dev": { + "drupal/search_api": "~1.12", + "drupal/xls_serialization": "~1.0" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.1", + "datestamp": "1642805106", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Steven Jones", + "homepage": "https://www.drupal.org/user/99644" + }, + { + "name": "amoebanath", + "homepage": "https://www.drupal.org/user/2810799" + }, + { + "name": "james.williams", + "homepage": "https://www.drupal.org/user/592268" + }, + { + "name": "jamsilver", + "homepage": "https://www.drupal.org/user/476732" + }, + { + "name": "jhedstrom", + "homepage": "https://www.drupal.org/user/208732" + }, + { + "name": "nerdstein", + "homepage": "https://www.drupal.org/user/1557710" + } + ], + "description": "Plugin to export views data into various file formats.", + "homepage": "https://www.drupal.org/project/views_data_export", + "support": { + "source": "https://git.drupalcode.org/project/views_data_export" + } + }, { "name": "drupal/viewsreference", "version": "2.0.0-beta2", @@ -7453,6 +7572,90 @@ ], "time": "2021-07-09T08:23:52+00:00" }, + { + "name": "league/csv", + "version": "9.8.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/csv.git", + "reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/9d2e0265c5d90f5dd601bc65ff717e05cec19b47", + "reference": "9d2e0265c5d90f5dd601bc65ff717e05cec19b47", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "ext-curl": "*", + "ext-dom": "*", + "friendsofphp/php-cs-fixer": "^v3.4.0", + "phpstan/phpstan": "^1.3.0", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpstan/phpstan-strict-rules": "^1.1.0", + "phpunit/phpunit": "^9.5.11" + }, + "suggest": { + "ext-dom": "Required to use the XMLConverter and or the HTMLConverter classes", + "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "League\\Csv\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://github.com/nyamsprod/", + "role": "Developer" + } + ], + "description": "CSV data manipulation made easy in PHP", + "homepage": "https://csv.thephpleague.com", + "keywords": [ + "convert", + "csv", + "export", + "filter", + "import", + "read", + "transform", + "write" + ], + "support": { + "docs": "https://csv.thephpleague.com", + "issues": "https://github.com/thephpleague/csv/issues", + "rss": "https://github.com/thephpleague/csv/releases.atom", + "source": "https://github.com/thephpleague/csv" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2022-01-04T00:13:07+00:00" + }, { "name": "league/oauth2-client", "version": "2.6.0", diff --git a/composer.patches.json b/composer.patches.json index e0d90b552..ba457b1d3 100644 --- a/composer.patches.json +++ b/composer.patches.json @@ -19,6 +19,9 @@ "drupal/core": { "https://www.drupal.org/project/drupal/issues/1819538#comment-14019597 - More link disappears when time-based views cache is enabled": "https://www.drupal.org/files/issues/2021-03-05/1819538-57-D9.patch", "https://www.drupal.org/project/drupal/issues/2833734 - Allow views attachment display use own pager options": "https://www.drupal.org/files/issues/2020-11-29/2833734-allow-attachment-pager-42.patch" + }, + "drupal/views_data_export": { + "https://www.drupal.org/project/views_data_export/issues/3173296": "https://www.drupal.org/files/issues/2021-02-12/3173296-9-batch-query-alter.patch" } } } diff --git a/config/core.extension.yml b/config/core.extension.yml index f921555de..7000c94cf 100644 --- a/config/core.extension.yml +++ b/config/core.extension.yml @@ -16,6 +16,7 @@ module: config: 0 config_split: 0 contextual: 0 + csv_serialization: 0 ctools: 0 date_recur: 0 date_recur_modular: 0 @@ -80,6 +81,7 @@ module: rdf: 0 realname: 0 redirect: 0 + rest: 0 search_api: 0 search_api_attachments: 0 search_api_db: 0 @@ -90,6 +92,7 @@ module: select2_facets: 0 select_a11y: 0 select_or_other: 0 + serialization: 0 shortcut: 0 social_api: 0 social_auth: 0 @@ -111,6 +114,7 @@ module: user: 0 user_expire: 0 variationcache: 0 + views_data_export: 0 viewsreference: 0 webform: 0 webform_submission_log: 0 diff --git a/config/views.view.files_used_in_nodes.yml b/config/views.view.files_used_in_nodes.yml index b5c3a8c74..ff612fcb6 100644 --- a/config/views.view.files_used_in_nodes.yml +++ b/config/views.view.files_used_in_nodes.yml @@ -10,12 +10,16 @@ dependencies: - field.storage.node.oa_section_ref - user.role.administrator module: + - csv_serialization - file - group - media - node - options + - rest + - serialization - user + - views_data_export id: files_used_in_nodes label: 'Files used in nodes' module: views @@ -631,12 +635,635 @@ display: - 'config:field.storage.node.field_iasc_audience' - 'config:field.storage.node.field_media_files' - 'config:field.storage.node.field_section_audience' + data_export_1: + id: data_export_1 + display_title: 'Data export 1' + display_plugin: data_export + position: 1 + display_options: + cache: + type: none + options: { } + style: + type: data_export + options: + formats: + csv: csv + csv_settings: + delimiter: ',' + enclosure: '"' + escape_char: \ + strip_tags: true + trim: true + encoding: utf8 + utf8_bom: '0' + use_serializer_encode_only: false + defaults: + cache: false + display_description: '' + display_extenders: { } + path: admin/content/files-on-nodes/export + displays: + page_1: page_1 + default: '0' + page_2: '0' + filename: export1.csv + automatic_download: false + store_in_public_file_directory: false + custom_redirect_path: false + redirect_to_display: page_1 + include_query_params: false + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - request_format + - 'user.node_grants:view' + - user.roles + tags: + - 'config:field.storage.media.field_media_file' + - 'config:field.storage.node.field_iasc_audience' + - 'config:field.storage.node.field_media_files' + - 'config:field.storage.node.field_section_audience' + data_export_2: + id: data_export_2 + display_title: 'Data export 2' + display_plugin: data_export + position: 1 + display_options: + fields: + title: + id: title + table: node_field_data + field: title + relationship: none + group_type: group + admin_label: '' + entity_type: node + entity_field: title + plugin_id: field + label: Title + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: false + ellipsis: false + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_iasc_audience: + id: field_iasc_audience + table: node__field_iasc_audience + field: field_iasc_audience + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: Audience + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: entity_reference_label + settings: + link: true + group_column: target_id + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_media_files: + id: field_media_files + table: node__field_media_files + field: field_media_files + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: File(s) + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: entity_reference_label + settings: + link: true + group_column: target_id + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_media_file: + id: field_media_file + table: media__field_media_file + field: field_media_file + relationship: field_media_files + group_type: group + admin_label: '' + plugin_id: field + label: File + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: file_url_plain + settings: { } + group_column: '' + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + oa_section_ref: + id: oa_section_ref + table: node__oa_section_ref + field: oa_section_ref + relationship: none + group_type: group + admin_label: '' + plugin_id: field + label: 'Section (legacy)' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: entity_reference_label + settings: + link: true + group_column: target_id + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + pager: + type: some + options: + offset: 0 + items_per_page: 0 + cache: + type: none + options: { } + filters: + status: + id: status + table: node_field_data + field: status + entity_type: node + entity_field: status + plugin_id: boolean + value: '1' + group: 1 + expose: + operator: '' + operator_limit_selection: false + operator_list: { } + field_media_file_target_id: + id: field_media_file_target_id + table: media__field_media_file + field: field_media_file_target_id + relationship: field_media_files + group_type: group + admin_label: '' + plugin_id: numeric + operator: 'not empty' + value: + min: '' + max: '' + value: '' + group: 1 + exposed: false + expose: + operator_id: '' + label: '' + description: '' + use_operator: false + operator: '' + operator_limit_selection: false + operator_list: { } + identifier: '' + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + min_placeholder: '' + max_placeholder: '' + placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + oa_section_ref_target_id: + id: oa_section_ref_target_id + table: node__oa_section_ref + field: oa_section_ref_target_id + relationship: none + group_type: group + admin_label: '' + plugin_id: numeric + operator: 'not empty' + value: + min: '' + max: '' + value: '' + group: 1 + exposed: false + expose: + operator_id: '' + label: '' + description: '' + use_operator: false + operator: '' + operator_limit_selection: false + operator_list: { } + identifier: '' + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + min_placeholder: '' + max_placeholder: '' + placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + title: + id: title + table: node_field_data + field: title + relationship: oa_section_ref + group_type: group + admin_label: '' + entity_type: node + entity_field: title + plugin_id: string + operator: word + value: '(IASC) (Donor)' + group: 1 + exposed: false + expose: + operator_id: '' + label: '' + description: '' + use_operator: false + operator: '' + operator_limit_selection: false + operator_list: { } + identifier: '' + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + filter_groups: + operator: AND + groups: + 1: AND + style: + type: data_export + options: + formats: + csv: csv + csv_settings: + delimiter: ',' + enclosure: '"' + escape_char: \ + strip_tags: true + trim: true + encoding: utf8 + utf8_bom: '0' + use_serializer_encode_only: false + defaults: + cache: false + relationships: false + fields: false + filters: false + filter_groups: false + header: false + relationships: + field_media_files: + id: field_media_files + table: node__field_media_files + field: field_media_files + relationship: none + group_type: group + admin_label: 'field_media_files: Media' + plugin_id: standard + required: false + oa_section_ref: + id: oa_section_ref + table: node__oa_section_ref + field: oa_section_ref + relationship: none + group_type: group + admin_label: 'oa_section_ref: Content' + plugin_id: standard + required: false + display_description: '' + header: + area: + id: area + table: views + field: area + relationship: none + group_type: group + admin_label: '' + plugin_id: text + empty: true + content: + value: "

Private files used on nodes with \"Section (legacy)\" (oa_section_ref) ponting to a group containing either: \"(IASC)\" or \"(Donor)\"

\r\n\r\n" + format: basic_html + tokenize: false + result: + id: result + table: views + field: result + relationship: none + group_type: group + admin_label: '' + plugin_id: result + empty: false + content: 'Displaying @start - @end of @total' + display_extenders: { } + path: admin/content/files-on-nodes-section-ref/export + displays: + page_2: page_2 + default: '0' + page_1: '0' + filename: export2.csv + automatic_download: false + export_method: batch + export_batch_size: 100 + export_limit: 0 + store_in_public_file_directory: true + custom_redirect_path: false + redirect_to_display: page_2 + include_query_params: false + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - request_format + - 'user.node_grants:view' + - user.roles + tags: + - 'config:field.storage.media.field_media_file' + - 'config:field.storage.node.field_iasc_audience' + - 'config:field.storage.node.field_media_files' + - 'config:field.storage.node.oa_section_ref' page_1: id: page_1 - display_title: Page + display_title: 'Page 1' display_plugin: page position: 1 display_options: + display_description: '' display_extenders: { } path: admin/content/files-on-nodes menu: @@ -663,7 +1290,7 @@ display: - 'config:field.storage.node.field_section_audience' page_2: id: page_2 - display_title: Page + display_title: 'Page 2' display_plugin: page position: 1 display_options: @@ -1156,6 +1783,7 @@ display: admin_label: 'oa_section_ref: Content' plugin_id: standard required: false + display_description: '' header: area: id: area From f8057468c78868b32967c726d3d652f9f2b6cd10 Mon Sep 17 00:00:00 2001 From: "Peter Droogmans (attiks)" Date: Wed, 1 Jun 2022 15:39:52 +0200 Subject: [PATCH 2/4] feat: Add export --- symfony.lock | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/symfony.lock b/symfony.lock index 94e837bc3..5596564e1 100644 --- a/symfony.lock +++ b/symfony.lock @@ -65,6 +65,9 @@ "drupal/console-extend-plugin": { "version": "0.9.5" }, + "drupal/csv_serialization": { + "version": "2.0.0" + }, "drupal/dev_mode": { "version": "2.3.0" }, @@ -74,12 +77,18 @@ "drupal/honeypot": { "version": "2.0.2" }, + "drupal/memcache": { + "version": "2.3.0" + }, "drupal/seckit": { "version": "2.0.0" }, "drupal/user_expire": { "version": "1.0.0" }, + "drupal/views_data_export": { + "version": "1.1.0" + }, "drupal/webform": { "version": "6.1.3" }, @@ -125,6 +134,9 @@ "laminas/laminas-zendframework-bridge": { "version": "1.2.0" }, + "league/csv": { + "version": "9.8.0" + }, "phpspec/prophecy-phpunit": { "version": "v2.0.1" }, From 113802d6f840b6a73fb708a186089f38e7b8f95a Mon Sep 17 00:00:00 2001 From: Andy Footner Date: Thu, 2 Jun 2022 12:10:29 +0200 Subject: [PATCH 3/4] chore: improvements for seckit Refs: OPS-8232 --- composer.json | 5 +++++ composer.lock | 33 ++++++++++++++++++++++++++++++++- composer.patches.json | 21 ++++++++++++--------- config/core.extension.yml | 1 + config/seckit.settings.yml | 6 +++--- symfony.lock | 3 +++ 6 files changed, 56 insertions(+), 13 deletions(-) diff --git a/composer.json b/composer.json index f82cd3fb0..4bad2be1f 100755 --- a/composer.json +++ b/composer.json @@ -21,6 +21,10 @@ { "type": "vcs", "url": "https://github.com/UN-OCHA/file_checker" + }, + { + "type": "vcs", + "url": "https://github.com/UN-OCHA/ocha_security.git" } ], "require": { @@ -93,6 +97,7 @@ "unocha/common_design": "^5.0.0", "unocha/file_checker": "dev-8.x-1.x", "unocha/ocha_integrations": "^1.0", + "unocha/ocha_security": "^1.0", "unocha/un_date": "^1.0.1", "vlucas/phpdotenv": "^2.4", "webflo/drupal-finder": "^1.0.0", diff --git a/composer.lock b/composer.lock index 9da2613c6..a052cbbea 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9e6af235d7be5d7e6a4c82cb56ffb684", + "content-hash": "6aad375f94809a09992ddc63a2b37f1c", "packages": [ { "name": "algolia/places", @@ -12621,6 +12621,37 @@ }, "time": "2021-09-03T07:45:25+00:00" }, + { + "name": "unocha/ocha_security", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/UN-OCHA/ocha_security.git", + "reference": "7d254cc87cf6ef1973a472dfad2c37e763ed0879" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/UN-OCHA/ocha_security/zipball/7d254cc87cf6ef1973a472dfad2c37e763ed0879", + "reference": "7d254cc87cf6ef1973a472dfad2c37e763ed0879", + "shasum": "" + }, + "require": { + "composer/installers": "^1.2" + }, + "require-dev": { + "drupal/coder": "^8.3", + "sebastian/phpcpd": "^6.0" + }, + "type": "drupal-module", + "license": [ + "GPL-2.0-only" + ], + "support": { + "source": "https://github.com/UN-OCHA/ocha_security/tree/v1.0.1", + "issues": "https://github.com/UN-OCHA/ocha_security/issues" + }, + "time": "2022-06-01T09:48:10+00:00" + }, { "name": "unocha/un_date", "version": "1.0.1", diff --git a/composer.patches.json b/composer.patches.json index ba457b1d3..d4fd22c39 100644 --- a/composer.patches.json +++ b/composer.patches.json @@ -1,27 +1,30 @@ { "patches": { - "drupal/paragraphs": { - "https://www.drupal.org/project/paragraphs/issues/2868252#comment-13622986": "https://www.drupal.org/files/issues/2020-05-20/i2868252-28.patch" - }, - "drupal/viewsreference": { - "https://dgo.to/3166490 - Trigger ajax refresh when display ID is changed": "https://www.drupal.org/files/issues/2020-09-02/viewsreference-ajax_after_display_selection-3166490-3.patch" + "drupal/core": { + "https://www.drupal.org/project/drupal/issues/1819538#comment-14019597 - More link disappears when time-based views cache is enabled": "https://www.drupal.org/files/issues/2021-03-05/1819538-57-D9.patch", + "https://www.drupal.org/project/drupal/issues/2833734 - Allow views attachment display use own pager options": "https://www.drupal.org/files/issues/2020-11-29/2833734-allow-attachment-pager-42.patch" }, "drupal/group": { "https://www.drupal.org/project/group/issues/2817109 - How to redirect to the owning group after adding a gnode?": "https://www.drupal.org/files/issues/2817109-by-rachel_norfolk-ericras-How-to-redir.patch" }, + "drupal/paragraphs": { + "https://www.drupal.org/project/paragraphs/issues/2868252#comment-13622986": "https://www.drupal.org/files/issues/2020-05-20/i2868252-28.patch" + }, "drupal/search_api": { "https://www.drupal.org/project/search_api/issues/3130004 - Facets query part is lost in views": "https://git.drupalcode.org/project/search_api/-/merge_requests/8.diff" }, + "drupal/seckit": { + "https://www.drupal.org/project/seckit/issues/2844205#comment-14455849": "https://www.drupal.org/files/issues/2021-09-13/2844205-alter-csp-directives-10.patch" + }, "drupal/user_expire": { "Allow the notification email to be customised": "https://git.drupalcode.org/project/user_expire/-/merge_requests/5.diff", "Reset expiration when user is reactivated": "https://git.drupalcode.org/project/user_expire/-/merge_requests/6.diff" }, - "drupal/core": { - "https://www.drupal.org/project/drupal/issues/1819538#comment-14019597 - More link disappears when time-based views cache is enabled": "https://www.drupal.org/files/issues/2021-03-05/1819538-57-D9.patch", - "https://www.drupal.org/project/drupal/issues/2833734 - Allow views attachment display use own pager options": "https://www.drupal.org/files/issues/2020-11-29/2833734-allow-attachment-pager-42.patch" - }, "drupal/views_data_export": { "https://www.drupal.org/project/views_data_export/issues/3173296": "https://www.drupal.org/files/issues/2021-02-12/3173296-9-batch-query-alter.patch" + }, + "drupal/viewsreference": { + "https://dgo.to/3166490 - Trigger ajax refresh when display ID is changed": "https://www.drupal.org/files/issues/2020-09-02/viewsreference-ajax_after_display_selection-3166490-3.patch" } } } diff --git a/config/core.extension.yml b/config/core.extension.yml index 7000c94cf..b6df85029 100644 --- a/config/core.extension.yml +++ b/config/core.extension.yml @@ -69,6 +69,7 @@ module: node: 0 node_view_permissions: 0 ocha_integrations: 0 + ocha_security: 0 ocha_viewsreference_filter: 0 options: 0 page_cache: 0 diff --git a/config/seckit.settings.yml b/config/seckit.settings.yml index bf2c6a32c..23a9826b5 100644 --- a/config/seckit.settings.yml +++ b/config/seckit.settings.yml @@ -8,16 +8,16 @@ seckit_xss: webkit: false report-only: true default-src: '' - script-src: '''self'' ''unsafe-inline'' fonts.googleapis.com www.gstatic.com platform.twitter.com *.twimg.com www.google.com www.googletagmanager.com www.google-analytics.com cdn.jsdelivr.net' + script-src: '''self'' fonts.googleapis.com gstatic.com platform.twitter.com *.twimg.com google.com googletagmanager.com google-analytics.com cdn.jsdelivr.net' object-src: '' style-src: '' - img-src: '''self'' data: *.twimg.com *.twitter.com *.google-analytics.com www.googletagmanager.com *.ytimg.com *.google.com mcusercontent.com *.mailchimp.com *.gstatic.com' + img-src: '''self'' data: *.twimg.com *.twitter.com *.google-analytics.com googletagmanager.com *.ytimg.com *.google.com mcusercontent.com *.mailchimp.com *.gstatic.com' media-src: '' frame-src: '' frame-ancestors: '' child-src: '' font-src: 'data: interagencystandingcommittee.org fonts.gstatic.com' - connect-src: '''self'' www.google-analytics.com' + connect-src: '''self'' google-analytics.com' report-uri: /report-csp-violation upgrade-req: false policy-uri: '' diff --git a/symfony.lock b/symfony.lock index 5596564e1..329890dd8 100644 --- a/symfony.lock +++ b/symfony.lock @@ -182,6 +182,9 @@ "unocha/file_checker": { "version": "dev-8.x-1.x" }, + "unocha/ocha_security": { + "version": "v1.0.1" + }, "wikimedia/composer-merge-plugin": { "version": "v2.0.1" } From 321ef42041667aab5bb2d193c11410748ed4f5b6 Mon Sep 17 00:00:00 2001 From: Andy Footner Date: Thu, 2 Jun 2022 12:45:30 +0200 Subject: [PATCH 4/4] chore: restore wwws Refs: OPS-8232 --- config/seckit.settings.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/seckit.settings.yml b/config/seckit.settings.yml index 23a9826b5..d7efeab47 100644 --- a/config/seckit.settings.yml +++ b/config/seckit.settings.yml @@ -8,16 +8,16 @@ seckit_xss: webkit: false report-only: true default-src: '' - script-src: '''self'' fonts.googleapis.com gstatic.com platform.twitter.com *.twimg.com google.com googletagmanager.com google-analytics.com cdn.jsdelivr.net' + script-src: '''self'' fonts.googleapis.com www.gstatic.com platform.twitter.com *.twimg.com www.google.com www.googletagmanager.com www.google-analytics.com cdn.jsdelivr.net' object-src: '' style-src: '' - img-src: '''self'' data: *.twimg.com *.twitter.com *.google-analytics.com googletagmanager.com *.ytimg.com *.google.com mcusercontent.com *.mailchimp.com *.gstatic.com' + img-src: '''self'' data: *.twimg.com *.twitter.com *.google-analytics.com www.googletagmanager.com *.ytimg.com *.google.com mcusercontent.com *.mailchimp.com *.gstatic.com' media-src: '' frame-src: '' frame-ancestors: '' child-src: '' font-src: 'data: interagencystandingcommittee.org fonts.gstatic.com' - connect-src: '''self'' google-analytics.com' + connect-src: '''self'' www.google-analytics.com' report-uri: /report-csp-violation upgrade-req: false policy-uri: ''