From 689363ad988b85af293c4390ae5c60493c22751a Mon Sep 17 00:00:00 2001 From: David Upton Date: Mon, 2 Oct 2023 15:17:56 -0400 Subject: [PATCH 01/16] DIG-3130 ML: Update field label on Listing Form --- .../default/webform.webform.metrolist_listing.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/config/default/webform.webform.metrolist_listing.yml b/config/default/webform.webform.metrolist_listing.yml index 98e7229e06..f07f9e0910 100644 --- a/config/default/webform.webform.metrolist_listing.yml +++ b/config/default/webform.webform.metrolist_listing.yml @@ -558,7 +558,7 @@ elements: |- '#rows': 4 rental_type: '#type': checkbox - '#title': 'Income Based' + '#title': 'Project-Based Voucher' '#wrapper_attributes': class: - g--2 @@ -847,7 +847,7 @@ elements: |- '#wrapper_attributes': style: - 'float:left;' - - 'margin-top: 1.6rem;' + - 'margin-top: 1.2rem;' '#label_attributes': class: - cb-dh @@ -867,7 +867,7 @@ elements: |- '#wrapper_attributes': style: - 'float:left;' - - 'margin-top: 1.6rem;' + - 'margin-top: 1.2rem;' '#label_attributes': class: - cb-dh @@ -887,7 +887,7 @@ elements: |- '#wrapper_attributes': style: - 'float:left;' - - 'margin-top: 1.6rem;' + - 'margin-top: 1.2rem;' '#label_attributes': class: - cb-dh @@ -904,18 +904,21 @@ elements: |- - cb-f-wf rental_type: '#type': checkbox - '#title': 'Income Based' + '#title': 'Project-Based
Voucher' '#wrapper_attributes': class: - g--2 style: - 'float:left;' - 'clear:both;' - - 'margin-top: 1.6rem;' + - 'margin-top: 1.2rem;' '#label_attributes': + class: + - cb-dh style: - 'float:right;' - 'flex-direction: column-reverse;' + - 'line-height: 1rem;' '#attributes': style: - 'margin: 0 auto;' From a32738fb61eb02d66dcf1b12ac2cde7ae2654476 Mon Sep 17 00:00:00 2001 From: David Upton Date: Tue, 3 Oct 2023 10:37:08 -0400 Subject: [PATCH 02/16] DIG-3093 Add Content search to site-admins backend. --- .../custom/bos_core/src/Form/QueryForm.php | 555 +++++++++++++++--- 1 file changed, 483 insertions(+), 72 deletions(-) diff --git a/docroot/modules/custom/bos_core/src/Form/QueryForm.php b/docroot/modules/custom/bos_core/src/Form/QueryForm.php index b346b95e87..cc51d8db39 100644 --- a/docroot/modules/custom/bos_core/src/Form/QueryForm.php +++ b/docroot/modules/custom/bos_core/src/Form/QueryForm.php @@ -19,6 +19,113 @@ */ class QueryForm extends ConfigFormBase { + // These content types are not included in the listing, and are not searched. + private $always_exclude = [ + "bh_account", + "bh_contact", + "bh_meeting", + "bh_parcel", + "bh_parcel_project_assoc", + "bh_project", + "bh_update", + "election_report", + "emergency_alert", + "metrolist_affordable_housing", + "metrolist_development", + "metrolist_unit", + "neighborhood_lookup", + "status_item" + ]; + + // These content types are included in the listing, but are not selected. + private $unselected_cts = [ + "public_notice", + "change", + "site_alert" + ]; + + + private $node_text_tables = [ + ["table_name" => "node__field_title", "search_field"=>"field_title_value"], + ["table_name" => "node__title_field", "search_field"=>"title_field_value"], + ["table_name" => "node__field_description", "search_field"=>"field_description_value"], + ["table_name" => "node__field_intro_text", "search_field"=>"field_intro_text_value"], + ["table_name" => "node__field_extra_info", "search_field"=>"field_extra_info_value"], + ["table_name" => "node__field_additional_information", "search_field"=>"field_additional_information_value"], + ["table_name" => "node__field_address", "search_field"=>"field_address_address_line1"], + ["table_name" => "node__field_address", "search_field"=>"field_address_address_line2"], + ["table_name" => "node__field_event_contact", "search_field"=>"field_event_contact_value"], + ["table_name" => "node__field_first_name", "search_field"=>"field_first_name_value"], + ["table_name" => "node__field_last_name", "search_field"=>"field_last_name_value"], + ["table_name" => "node__field_need_to_know", "search_field"=>"field_need_to_know_value"], + ["table_name" => "node__field_related_links", "search_field"=>"field_related_links_title"], + ["table_name" => "node__field_email", "search_field"=>"field_email_value"], + ["table_name" => "node__field_thanks", "search_field"=>"field_thanks_value"], + ["table_name" => "node__field_url", "search_field"=>"field_url_value"], + ]; + + private $node_link_tables = [ + ["table_name" => "node__field_details_link", "search_field"=>"field_details_link_uri"], + ["table_name" => "node__field_related_links", "search_field"=>"field_related_links_uri"], + ["table_name" => "node__field_email", "search_field"=>"field_email_value"], + ["table_name" => "node__field_related_links", "search_field"=>"field_related_links_uri"], + ["table_name" => "node__field_source_file", "search_field"=>"field_source_file_title"], + ["table_name" => "node__field_source_file", "search_field"=>"field_source_file_uri"], + ["table_name" => "node__field_document", "search_field"=>"field_document_description"], + ["table_name" => "node__field_url", "search_field"=>"field_url_value"], + ]; + + private $media_tables = [ + ["table_name" => "file__field_file_image_title_text", "search_field"=>"field_file_image_title_text_value"], + ["table_name" => "file__field_image_caption", "search_field"=>"field_image_caption_value"], + ["table_name" => "node__field_source_file", "search_field"=>"field_source_file_title"], + ["table_name" => "node__field_source_file", "search_field"=>"field_source_file_uri"], + ["table_name" => "media__field_document", "search_field"=>"field_document_description"], + ]; + + private $para_text_tables = [ + ["table_name" => "paragraph__field_intro_text", "search_field"=>"field_intro_text_value"], + ["table_name" => "paragraph__field_description", "search_field"=>"field_description_value"], + ["table_name" => "paragraph__field_title", "search_field"=>"field_title_value"], + ["table_name" => "paragraph__field_component_title", "search_field"=>"field_component_title_value"], + ["table_name" => "paragraph__field_message", "search_field"=>"field_message_value"], + ["table_name" => "paragraph__field_subheader", "search_field"=>"field_subheader_value"], + ["table_name" => "paragraph__field_additional_information", "search_field"=>"field_additional_information_value"], + ["table_name" => "paragraph__field_extra_info", "search_field"=>"field_extra_info_value"], + ["table_name" => "paragraph__field_column_title", "search_field"=>"field_column_title_value"], + ["table_name" => "paragraph__field_column_description", "search_field"=>"field_column_description_value"], + ["table_name" => "paragraph__field_left_column", "search_field"=>"field_left_column_value"], + ["table_name" => "paragraph__field_middle_column", "search_field"=>"field_middle_column_value"], + ["table_name" => "paragraph__field_right_column", "search_field"=>"field_right_column_value"], + ["table_name" => "paragraph__field_short_description", "search_field"=>"field_short_description_value"], + ["table_name" => "paragraph__field_short_title", "search_field"=>"field_short_title_value"], + ["table_name" => "paragraph__field_sidebar_text", "search_field"=>"field_sidebar_text_value"], + ["table_name" => "paragraph__field_step_details", "search_field"=>"field_step_details_value"], + ["table_name" => "paragraph__field_address", "search_field"=>"field_address_address_line1"], + ["table_name" => "paragraph__field_address", "search_field"=>"field_address_address_line2"], + ["table_name" => "paragraph__field_internal_link", "search_field"=>"field_internal_link_title"], + ["table_name" => "paragraph__field_external_link", "search_field"=>"field_external_link_title"], + ["table_name" => "paragraph__field_message_link_url", "search_field"=>"field_message_link_url_uri"], + ["table_name" => "paragraph__field_message_link_url", "search_field"=>"field_message_link_url_title"], + ["table_name" => "paragraph__field_first_name", "search_field"=>"field_first_name_value"], + ["table_name" => "paragraph__field_last_name", "search_field"=>"field_last_name_value"], + ["table_name" => "paragraph__field_header", "search_field"=>"field_header_value"], + ["table_name" => "paragraph__field_how_to_title", "search_field"=>"field_how_to_title_value"], + ["table_name" => "paragraph__field_keep_in_mind", "search_field"=>"field_keep_in_mind_value"], + ["table_name" => "paragraph__field_quote", "search_field"=>"field_quote_value"], + ]; + private $para_link_tables = [ + ["table_name" => "paragraph__field_source_url", "search_field"=>"field_source_url_value"], + ["table_name" => "paragraph__field_external_link", "search_field"=>"field_external_link_uri"], + ["table_name" => "paragraph__field_external_link", "search_field"=>"field_external_link_title"], + ["table_name" => "paragraph__field_internal_link", "search_field"=>"field_internal_link_uri"], + ["table_name" => "paragraph__field_internal_link", "search_field"=>"field_internal_link_title"], + ["table_name" => "paragraph__field_lightbox_link", "search_field"=>"field_lightbox_link_uri"], + ["table_name" => "paragraph__field_lightbox_link", "search_field"=>"field_lightbox_link_title"], + ["table_name" => "paragraph__field_source_url", "search_field"=>"field_source_url_value"], + ["table_name" => "paragraph__field_document", "search_field"=>"field_document_description"], + ]; + /** * {@inheritdoc} */ @@ -37,41 +144,156 @@ protected function getEditableConfigNames() { * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { - $config = $this->config('bos_core.settings'); + $defs = \Drupal::entityTypeManager() + ->getStorage('node_type') + ->loadMultiple(); + $content_types = []; + foreach($defs as $def) { + if (!in_array($def->id(), $this->always_exclude)) { + $content_types[$def->id()] = $def->id(); + } + } $form = [ '#tree' => TRUE, 'bos_core' => [ '#type' => 'fieldset', - '#title' => 'Content Search', - '#description' => 'Run a deep search across site content components.', + '#title' => 'Site Search Functions', + '#description' => 'Run deep, field-level searches for content occurances in site components.', + '#description_display' => "before", '#collapsible' => FALSE, + "conditions" => [ + "#type" => "details", + "#title" => "Search Conditions", + '#description' => "This section allows you to select content types and field types to scan during the search.", + '#description_display' => "before", + 'nodes' => [ + "#type" => "details", + '#collapsible' => TRUE, + "#title" => "Select Content Types to scan:", + '#description' => "Select one or more content-types to search in.", + '#description_display' => "before", + "content_types" => [ + "#type" => "checkboxes", + '#required' => TRUE, + "#options" => $content_types, + ], + ], + 'fields' => [ + "#type" => "details", + "#title" => "Select types of field to scan:", + '#description' => "Select one or more field types to search in.", + '#description_display' => "before", + 'field_types' => [ + "#type" => "checkboxes", + '#required' => TRUE, + "#options" => [ + 'text_tables' => 'Text fields', + 'link_tables' => 'Link and Email fields', + 'media_tables' => 'Image and document fields', + ], + 'text_tables' => [ + '#description' => 'Text and title fields on selected content types. Includes email links, linked images, linked files and "scripts" embedded in text fields.', + '#default_value' => 'text_tables', + ], + 'link_tables' => [ + '#description' => 'Specific email fields on selected content types', + '#default_value' => 0, + ], + 'media_tables' => [ + '#description' => 'Specific URL, file and image fields on selected content types. Note there is a separate search here that can be used to find embedded occurances of media objects.', + '#default_value' => 0, + ], + ], + ], + ], "query" => [ - + "#type" => "details", + "#title" => "Text Search", + "#description" => "Enter a text string to search for.
This searches the source HTML and script tags rather than the rendered page, so you can look for embedded URL's and HTML attributes.", + '#description_display' => "before", + '#open' => TRUE, "search_text" => [ '#type' => 'textfield', '#required' => TRUE, + "#attributes" => ["style" => ["float:left"],], ], "search_button" => [ "#type" => "button", '#value' => "Search", + "#attributes" => ["class" => ["button", "button--primary"],], '#ajax' => [ 'callback' => '::makeSearch', 'event' => 'click', 'disable-refocus' => FALSE, - 'wrapper' => "edit-bos-core-query-search-button-results", + 'wrapper' => "edit-bos-core-query-results", 'progress' => [ 'type' => 'throbber', - ] + ], + ], ], "results" => [ - "#type" => "fieldset" - ] + "#type" => "fieldset", + "#attributes" => [ + 'style' => ["display:none;"], + ], + ], ], + "file" => [ + "#type" => "details", + "#title" => "Advanced Search", + '#description' => "Advanced search functions.", + '#description_display' => "before", + "email_checker" => [ + "#type" => "fieldset", + "#title" => "Email List Search", + '#description' => "Supply a csv file with a single email address on each line and this function will provide a file with information on occurances found.", + '#description_display' => "before", + 'loader' => [ + '#type' => 'managed_file', + '#name' => 'searchfile', + '#title' => t('Search Input File'), + '#size' => 20, + '#description' => t('CSV format only'), + '#upload_validators' => array( + 'file_validate_extensions' => array('csv txt'), + 'file_validate_size' => array(5*1024*1024), + ), + '#upload_location' => 'public://tmp/', + ], + "advanced_button" => [ + "#type" => "button", + '#value' => "Search Using File", + "#attributes" => ["class" => ["button", "button--primary"],], + '#ajax' => [ + 'callback' => '::makeAdvancedSearch', + 'event' => 'click', + 'disable-refocus' => FALSE, + 'wrapper' => "edit-bos-core-file-advresults", + 'progress' => [ + 'type' => 'throbber', + ] + ], + ], + ], + "advresults" => [ + "#type" => "fieldset", + "#attributes" => [ + 'style' => ["display:none;"], + ], + ] ] ], ]; + + // select all items, but the ones optionally excluded. + foreach($form["bos_core"]["conditions"]["nodes"]["content_types"]["#options"] as $ct) { + if (!in_array($ct, $this->unselected_cts)) { + $form["bos_core"]["conditions"]["nodes"]["content_types"][$ct]["#default_value"] = $ct; + } + } + $form = parent::buildForm($form, $form_state); $form['actions']['submit']['#attributes']=['style'=>['display:none']]; return $form; @@ -80,11 +302,18 @@ public function buildForm(array $form, FormStateInterface $form_state) { public function makeSearch(array &$form, FormStateInterface $form_state) { $search = $form_state->getValue("bos_core")["query"]["search_text"]; $search = str_replace("%", "", $search); - $results = $this->makeQuery($search, []); + $fields = $form["bos_core"]["conditions"]["fields"]["field_types"]; + + $results = $this->makeQuery($search, $fields["#value"], $this->getExclusions($form_state)); + $formatted_results = $this->formatSearchResults($search, $results); + $form["bos_core"]["query"]["results"] = [ "#type" => "fieldset", - "#attributes" => ["id" => "edit-bos-core-query-search-button-results"], + "#attributes" => [ + "id" => "edit-bos-core-query-results", + "style" => ["display:block;"], + ], "markup" => [ "#markup" => Markup::create($formatted_results) ] @@ -92,55 +321,57 @@ public function makeSearch(array &$form, FormStateInterface $form_state) { return $form["bos_core"]["query"]["results"]; } - private function makeQuery(string $search, array $exclude) { + private function getExclusions(FormStateInterface $form_state) { + $cts = $form_state->getValues()["bos_core"]["conditions"]["nodes"]["content_types"]; + $exclusions = $this->always_exclude; + foreach($cts as $key => $ct) { + if ($key != $ct) { + $exclusions[] = $key; + } + } + return $exclusions; + } - $union = []; - $query = "CREATE TEMPORARY TABLE COBQUERY \n"; + private function makeQuery(string $search, array $fields, array $exclude) { - // Always search the node title - $union[] = "SELECT nid component_id, type content_type, 'node.title' component, title result, nid nid + $node_tables = !empty($fields["text_tables"]) ? $this->node_text_tables : []; + $node_tables = !empty($fields["link_tables"]) ? array_merge($node_tables, $this->node_link_tables) : $node_tables; + $paragraph_tables = !empty($fields["text_tables"]) ? $this->para_text_tables : []; + $paragraph_tables = !empty($fields["link_tables"]) ? array_merge($paragraph_tables, $this->para_link_tables) : $paragraph_tables; + $media_tables = !empty($fields["media_tables"]) ? $this->media_tables : []; + + $union1 = []; + $union2 = []; + $conn = \Drupal::database(); + + if (!empty($fields["text_tables"])) { + // Search the node title + $union1[] = "SELECT nid component_id, type content_type, 'node.title' component, title result, nid nid FROM node_field_data WHERE title LIKE @search"; - // Always search the node body - $union[] = "SELECT entity_id component_id, bundle content_type, 'node.body' component, body_value result, entity_id nid + // Search the node body + $union1[] = "SELECT entity_id component_id, bundle content_type, 'node.body' component, body_value result, entity_id nid FROM node__body WHERE body_value like @search"; + } // Search the node fields - $node_tables = [ - ["table_name" => "node__field_description", "search_field"=>"field_description_value"], - ["table_name" => "node__field_intro_text", "search_field"=>"field_intro_text_value"], - ["table_name" => "node__field_details_link", "search_field"=>"field_details_link_uri"], - ["table_name" => "node__field_related_links", "search_field"=>"field_related_links_uri"], - ]; foreach($node_tables as $table) { $type = str_replace("node__field_","", $table["table_name"]); - $union[] = " + $union1[] = " SELECT entity_id component_id, bundle content_type, 'node.{$type}' component, {$table["search_field"]} result, entity_id nid FROM {$table["table_name"]} WHERE {$table["search_field"]} LIKE @search"; } - $paragraph_tables = [ - ["table_name" => "paragraph__field_intro_text", "search_field"=>"field_intro_text_value"], - ["table_name" => "paragraph__field_extra_info", "search_field"=>"field_extra_info_value"], - ["table_name" => "paragraph__field_left_column", "search_field"=>"field_left_column_value"], - ["table_name" => "paragraph__field_middle_column", "search_field"=>"field_middle_column_value"], - ["table_name" => "paragraph__field_right_column", "search_field"=>"field_right_column_value"], - ["table_name" => "paragraph__field_short_description", "search_field"=>"field_short_description_value"], - ["table_name" => "paragraph__field_source_url", "search_field"=>"field_source_url_value"], - ["table_name" => "paragraph__field_external_link", "search_field"=>"field_external_link_uri"], - ["table_name" => "paragraph__field_internal_link", "search_field"=>"field_internal_link_uri"], - ["table_name" => "paragraph__field_source_url", "search_field"=>"field_source_url_value"], - ]; foreach($paragraph_tables as $para) { $find_parent = "IF(para.parent_type = 'node', para.parent_id, IF(para2.parent_type = 'node', para2.parent_id, IF(para3.parent_type = 'node', para3.parent_id, IF(para4.parent_type = 'node', para4.parent_id, para5.parent_id))))"; - $union[] = " + $union1[] = " SELECT DISTINCT entity_id component_id , (SELECT type FROM node WHERE nid = $find_parent) content_type @@ -156,20 +387,72 @@ private function makeQuery(string $search, array $exclude) { HAVING node_id IS NOT NULL"; } - $query .= implode("\nUNION \n", $union); + if (!empty($union1)) { + $query1 = "CREATE TEMPORARY TABLE COBQUERY1 \n"; + $query1 .= implode("\nUNION \n", $union1); - try { - $conn = \Drupal::database(); - $conn->query("DROP TABLE IF EXISTS COBQUERY")->execute(); - $conn->query("SET @search = '%{$search}%'")->execute(); + try { + $conn->query("DROP TABLE IF EXISTS COBQUERY1")->execute(); + $conn->query("SET @search = '%{$search}%'")->execute(); - // Do the search - $qry = $conn->query($query); + // Do the search + $conn->query($query1); + } + catch (\Exception $e) { + return FALSE; + } } - catch (\Exception $e) { - return FALSE; + + if (!empty($fields["media_tables"])) { + + // Check the managed files table + $union2[] = "SELECT fid component_id, 'file' content_type, 'file.filename' component, filename result, fid nid + FROM file_managed + WHERE filename LIKE @search"; + $union2[] = "SELECT fid component_id, 'file' content_type, 'file.uri' component, uri result, fid nid + FROM file_managed + WHERE uri LIKE @search"; + $union2[] = "SELECT mid component_id, 'media' content_type, 'media.name' component, name result, mid nid + FROM media_field_data + WHERE name LIKE @search"; + $union2[] = "SELECT entity_id component_id, 'media' content_type, 'media.title' component, image_title result, entity_id nid + FROM media__image + WHERE image_title LIKE @search"; + + foreach($media_tables as $file) { + $type = str_replace("field_","", $file["search_field"]); + $component = explode("_", $file["table_name"])[0]; + $union2[] = " + SELECT entity_id component_id, bundle content_type, '${component}.{$type}' component, {$file["search_field"]} result, entity_id nid + FROM {$file["table_name"]} + WHERE {$file["search_field"]} LIKE @search"; + } + + if (!empty($union2)) { + + $query2 = "CREATE TEMPORARY TABLE COBQUERY2 \n"; + + $query2 .= implode("\nUNION \n", $union2); + + try { + $conn->query("DROP TABLE IF EXISTS COBQUERY2")->execute(); + $conn->query("SET @search = '%{$search}%'")->execute(); + + // Do the search + $conn->query($query2); + } + catch (\Exception $e) { + return FALSE; + } + } } + /* + * We now have 1 or 2 tables created by some big union queries, containing + * the search results. + * Now need to filter and format the results. + */ + // Set up exclusions $exclude_condition = ""; if (!empty($exclude)) { @@ -178,20 +461,47 @@ private function makeQuery(string $search, array $exclude) { } // Reformat and filter the search results - $query = "SELECT DISTINCT - content_type - , (SELECT CONCAT('https://boston.gov/node', alias) FROM path_alias WHERE path = CONCAT('/node/', nid) AND status = 1) alias - , (SELECT moderation_state FROM content_moderation_state_field_data WHERE content_entity_id = nid) mod_state - , component - , REPLACE(REPLACE(result, '\"', ''''), '\r\n', '') result - , nid - FROM COBQUERY outs - WHERE content_type IS NOT NULL {$exclude_condition} - ORDER BY content_type, component"; - if ($qry = $conn->query($query)) { - $result = $qry->fetchAll(); - return $result; + $query = ""; + if ($union1) { + $query .= " + SELECT DISTINCT + 'content' grp + , content_type + , (SELECT CONCAT('https://boston.gov/node', alias) FROM path_alias WHERE path = CONCAT('/node/', nid) AND status = 1) alias + , (SELECT moderation_state FROM content_moderation_state_field_data WHERE content_entity_id = nid) mod_state + , component + , REPLACE(REPLACE(result, '\"', ''''), '\r\n', '') result + , nid + FROM COBQUERY1 outs + WHERE content_type IS NOT NULL + {$exclude_condition}"; + } + if ($union1 && $union2) { + $query .= "\nUNION\n"; + } + if ($union2) { + $query = " + SELECT DISTINCT + 'media' grp + , content_type + , '' alias + , '' mod_state + , component + , result + , nid + FROM COBQUERY2 + ORDER BY grp, content_type, component"; + } + + if ($query && $qry = $conn->query($query)) { + try { + return $qry->fetchAll(); + } + catch (\Exception $e) { + return FALSE; + } } + return FALSE; } @@ -202,27 +512,59 @@ private function formatSearchResults($search, $results) { if ($base == "boston.gov" || $base = "www.boston.gov") { $base = "content.boston.gov"; } - $count = count($results); - $output = "

There were {$count} string matches for '{$search}' on pages in the site

The following list of pages has the search string in one or more components:

"; - $output .= ""; - $dedup = []; - foreach ($results as $result) { - if (!in_array($result->nid, $dedup)) { - $page = ($result->alias != "" ? "{$result->alias} ({$result->nid})" : "NODE {$result->nid}"); - $alias = ($result->mod_state == "published" ? $result->alias : "https://{$base}/node/{$result->nid}"); - $output .= ""; - $output .= " + + $content = []; + $media = []; + foreach($results as $result) { + $result->grp == "content" ? $content[] = $result : $media[] = $result; + } + + if ($content) { + $count = count($content); + $dedup = []; + $output = "

There were {$count} matches for '{$search}' on pages in the site

The following list of pages has the search string in one or more components:

"; + $output .= "
PageContent TypeStateActions
{$page}
"; + foreach ($content as $result) { + if (!in_array($result->nid, $dedup)) { + $page = ($result->alias != "" ? "{$result->alias} ({$result->nid})" : "NODE {$result->nid}"); + $alias = ($result->mod_state == "published" ? $result->alias : "https://{$base}/node/{$result->nid}"); + $output .= ""; + $output .= ""; - $output .= ""; - $dedup[] = $result->nid; + $output .= ""; + $dedup[] = $result->nid; + } + } + $output .= "
PageContent TypeStateActions
{$page} {$result->content_type} ({$result->component}) {$result->mod_state} View Edit
"; + } + if ($media) { + $count = count($media); + $dedup = []; + $output = "

There were {$count} matches for '{$search}' in media saved in the site

"; + $output .= ""; + foreach ($media as $result) { + if (!in_array($result->nid, $dedup)) { + $page = ($result->alias != "" ? "{$result->alias} ({$result->nid})" : "NODE {$result->nid}"); + $alias = ($result->mod_state == "published" ? $result->alias : "https://{$base}/node/{$result->nid}"); + $output .= ""; + $output .= " + + + "; + $output .= ""; + $dedup[] = $result->nid; + } } + $output .= "
IDContent TypeMatch StringActions
{$page}{$result->content_type} ({$result->component}){$result->result} + View + +
"; } - $output .= ""; } else { $output = "Sorry the string '{$search}' was not found.
Please alter the search and try again."; @@ -230,4 +572,73 @@ private function formatSearchResults($search, $results) { return $output; } + public function makeAdvancedSearch(array &$form, FormStateInterface $form_state) { + if ($fid = $form_state->getValues()['bos_core']["file"]["email_checker"]["loader"][0]) { + if ($file = \Drupal::entityTypeManager()->getStorage("file")->load($fid)) { + + $file_path = $file->get("uri")[0]->value; + + if ($emails = file_get_contents($file_path)) { + $emails = explode(',', $emails); + $ran = strtotime("now"); + $downloadfile = "public://tmp/download{$ran}.csv"; + + $exclusions = $this->getExclusions($form_state); + + $fs = fopen($downloadfile, "w"); + fwrite($fs, "\"email\", \"count\",\n"); + + foreach ($emails as $email) { + $email = strtolower(trim(str_replace(['"', "\n"], '', $email))); + if (!empty($email)) { + try { + $count = $this->countOccurrances($email, $exclusions); + } + catch (\Exception $e) { + $count = ""; + } + } + else { + $count = ""; + } + $msg = "\"{$email}\",{$count},\n"; + fwrite($fs, $msg); + } + + fclose($fs); + +// $response = new BinaryFileResponse($downloadfile); +// $form_state->setResponse($response); + + $download_link = \Drupal::service('stream_wrapper_manager')->getViaUri($downloadfile)->getExternalUrl(); + + return [ + "#type" => "fieldset", + "#attributes" => [ + "id" => "edit-bos-core-file-advresults", + "style" => ["display:block;"], + ], + "markup" => [ + "#markup" => Markup::create("Site Successfully scanned. Results can be downloaded here.") + ] + ]; + } + } + } + } + + private function countOccurrances($search, $exclusions) { + try { + if ($result = $this->makeQuery($search, $exclusions)) { + return count($result); + } + else { + return ""; + } + } + catch (\exception $e) { + return ""; + } + + } } From a1a005ddd213938f5526bad9e13bbe4c08899659 Mon Sep 17 00:00:00 2001 From: David Upton Date: Tue, 3 Oct 2023 12:13:27 -0400 Subject: [PATCH 03/16] DIG-3093 Add Content search to site-admins backend. --- .../custom/bos_core/src/Form/QueryForm.php | 104 +++++++++--------- 1 file changed, 54 insertions(+), 50 deletions(-) diff --git a/docroot/modules/custom/bos_core/src/Form/QueryForm.php b/docroot/modules/custom/bos_core/src/Form/QueryForm.php index cc51d8db39..730020152e 100644 --- a/docroot/modules/custom/bos_core/src/Form/QueryForm.php +++ b/docroot/modules/custom/bos_core/src/Form/QueryForm.php @@ -453,49 +453,54 @@ private function makeQuery(string $search, array $fields, array $exclude) { * Now need to filter and format the results. */ - // Set up exclusions - $exclude_condition = ""; - if (!empty($exclude)) { - $exclude_condition = implode("','", $exclude); - $exclude_condition = "AND content_type NOT IN ('{$exclude_condition}') "; - } - // Reformat and filter the search results $query = ""; if ($union1) { - $query .= " - SELECT DISTINCT - 'content' grp - , content_type - , (SELECT CONCAT('https://boston.gov/node', alias) FROM path_alias WHERE path = CONCAT('/node/', nid) AND status = 1) alias - , (SELECT moderation_state FROM content_moderation_state_field_data WHERE content_entity_id = nid) mod_state - , component - , REPLACE(REPLACE(result, '\"', ''''), '\r\n', '') result - , nid - FROM COBQUERY1 outs - WHERE content_type IS NOT NULL - {$exclude_condition}"; + + // Set up exclusions + $exclude_condition = ""; + if (!empty($exclude)) { + $exclude_condition = implode("','", $exclude); + $exclude_condition = "AND content_type NOT IN ('{$exclude_condition}') "; + } + + $query .= " + SELECT DISTINCT + 'content' grp + , content_type + , (SELECT CONCAT('https://-base-/node', alias) FROM path_alias WHERE path = CONCAT('/node/', outs.nid) AND status = 1) alias + , (SELECT moderation_state FROM content_moderation_state_field_data WHERE content_entity_id = outs.nid) mod_state + , component + , REPLACE(REPLACE(result, '\"', ''''), '\r\n', '') result + , nid + FROM COBQUERY1 outs + WHERE content_type IS NOT NULL + {$exclude_condition}"; } + if ($union1 && $union2) { $query .= "\nUNION\n"; } + if ($union2) { - $query = " + $query .= " SELECT DISTINCT 'media' grp , content_type , '' alias - , '' mod_state + , (SELECT count(*) FROM drupal.file_usage where fid = outs2.nid) mod_state , component , result , nid - FROM COBQUERY2 - ORDER BY grp, content_type, component"; + FROM COBQUERY2 outs2 "; } - if ($query && $qry = $conn->query($query)) { + if ($query) { + $query .= "\nORDER BY grp, content_type, component"; try { - return $qry->fetchAll(); + if ($qry = $conn->query($query)) { + return $qry->fetchAll(); + } } catch (\Exception $e) { return FALSE; @@ -518,48 +523,47 @@ private function formatSearchResults($search, $results) { foreach($results as $result) { $result->grp == "content" ? $content[] = $result : $media[] = $result; } - + $output = ""; if ($content) { $count = count($content); $dedup = []; - $output = "

There were {$count} matches for '{$search}' on pages in the site

The following list of pages has the search string in one or more components:

"; - $output .= ""; + $output .= "

There were {$count} matches for '{$search}' on pages in the site

The following list of pages has the search string in one or more components:

"; + $output .= "
PageContent TypeStateActions
"; foreach ($content as $result) { if (!in_array($result->nid, $dedup)) { + $result->alias = str_replace('-base-', $base, $result->alias ?: ''); $page = ($result->alias != "" ? "{$result->alias} ({$result->nid})" : "NODE {$result->nid}"); $alias = ($result->mod_state == "published" ? $result->alias : "https://{$base}/node/{$result->nid}"); - $output .= ""; - $output .= " - - - "; - $output .= ""; + $output .= " + + + + + "; $dedup[] = $result->nid; } } $output .= "
PageContent TypeStateActions
{$page}{$result->content_type} ({$result->component}){$result->mod_state} - View - Edit -
{$page}{$result->content_type} ({$result->component}){$result->mod_state} + ViewEdit +
"; } + if ($media) { $count = count($media); $dedup = []; - $output = "

There were {$count} matches for '{$search}' in media saved in the site

"; - $output .= ""; + $output .= "

There were {$count} matches for '{$search}' in media saved in the site

"; + $output .= "
IDContent TypeMatch StringActions
"; foreach ($media as $result) { if (!in_array($result->nid, $dedup)) { - $page = ($result->alias != "" ? "{$result->alias} ({$result->nid})" : "NODE {$result->nid}"); - $alias = ($result->mod_state == "published" ? $result->alias : "https://{$base}/node/{$result->nid}"); - $output .= ""; - $output .= " - - - "; - $output .= ""; + $output .= " + + + + + + "; $dedup[] = $result->nid; } } From a4e8baa15234a71e0af4aae2d157f87fcf2f64a1 Mon Sep 17 00:00:00 2001 From: David Upton Date: Tue, 3 Oct 2023 16:45:06 -0400 Subject: [PATCH 04/16] DIG-2895 SSO Certificate Updates --- config/acquia_dev/key.key.iam_dir_sso_test_.yml | 5 +++-- config/acquia_prod/key.key.iam_dir_sso_prod_.yml | 5 +++-- config/acquia_stage/key.key.iam_dir_sso_test_.yml | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/config/acquia_dev/key.key.iam_dir_sso_test_.yml b/config/acquia_dev/key.key.iam_dir_sso_test_.yml index 33a59edf7c..ddaa4e60ad 100644 --- a/config/acquia_dev/key.key.iam_dir_sso_test_.yml +++ b/config/acquia_dev/key.key.iam_dir_sso_test_.yml @@ -9,8 +9,9 @@ label: 'IAM-DIR SSO (test)' description: 'TEST X509 cert from IAM supplied IDP metadata' key_type: asymmetric_public key_type_settings: {} -key_provider: config +key_provider: env key_provider_settings: - key_value: "" + env_variable: iam_x509_cert_test + strip_line_breaks: true key_input: textarea_field key_input_settings: { } diff --git a/config/acquia_prod/key.key.iam_dir_sso_prod_.yml b/config/acquia_prod/key.key.iam_dir_sso_prod_.yml index 29a8b9bca1..b0f78061b6 100644 --- a/config/acquia_prod/key.key.iam_dir_sso_prod_.yml +++ b/config/acquia_prod/key.key.iam_dir_sso_prod_.yml @@ -9,8 +9,9 @@ label: 'IAM-DIR SSO (PROD)' description: 'PROD X509 cert from IAM supplied IDP metadata' key_type: asymmetric_public key_type_settings: {} -key_provider: config +key_provider: env key_provider_settings: - key_value: "" + env_variable: iam_x509_cert + strip_line_breaks: true key_input: textarea_field key_input_settings: { } diff --git a/config/acquia_stage/key.key.iam_dir_sso_test_.yml b/config/acquia_stage/key.key.iam_dir_sso_test_.yml index 33a59edf7c..ddaa4e60ad 100644 --- a/config/acquia_stage/key.key.iam_dir_sso_test_.yml +++ b/config/acquia_stage/key.key.iam_dir_sso_test_.yml @@ -9,8 +9,9 @@ label: 'IAM-DIR SSO (test)' description: 'TEST X509 cert from IAM supplied IDP metadata' key_type: asymmetric_public key_type_settings: {} -key_provider: config +key_provider: env key_provider_settings: - key_value: "" + env_variable: iam_x509_cert_test + strip_line_breaks: true key_input: textarea_field key_input_settings: { } From 0c81b85858e1af45372941d9a31ed42f6256abe8 Mon Sep 17 00:00:00 2001 From: David Upton Date: Wed, 4 Oct 2023 09:42:57 -0400 Subject: [PATCH 05/16] DIG-3198 Refactoring some config files to avoid re-sync during cim --- config/acquia_dev/captcha.settings.yml | 6 +- .../views.view.maillog_overview.yml | 268 +++++++++--------- config/acquia_prod/captcha.settings.yml | 6 +- config/acquia_stage/captcha.settings.yml | 6 +- .../core.menu.static_menu_link_overrides.yml | 6 +- ...lesforce_mapping.metrolist_development.yml | 1 + ...ping.salesforce_mapping.metrolist_unit.yml | 1 + .../webform.webform.metrolist_listing.yml | 15 +- 8 files changed, 156 insertions(+), 153 deletions(-) diff --git a/config/acquia_dev/captcha.settings.yml b/config/acquia_dev/captcha.settings.yml index 7dda21a0c3..a8de10683e 100644 --- a/config/acquia_dev/captcha.settings.yml +++ b/config/acquia_dev/captcha.settings.yml @@ -1,12 +1,12 @@ _core: default_config_hash: _UaIWu0_ZD3lUs97wlFC2Koi-o7Bex69Xr9q36nJtkY -enabled_default: 0 default_challenge: captcha/Math description: 'This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.' administration_mode: false -allow_on_admin_pages: false -add_captcha_description: true default_validation: 1 persistence: 1 enable_stats: false log_wrong_responses: false +enabled_default: 0 +allow_on_admin_pages: false +add_captcha_description: true diff --git a/config/acquia_dev/views.view.maillog_overview.yml b/config/acquia_dev/views.view.maillog_overview.yml index a9c864022c..fc47647cab 100644 --- a/config/acquia_dev/views.view.maillog_overview.yml +++ b/config/acquia_dev/views.view.maillog_overview.yml @@ -21,113 +21,12 @@ base_table: maillog base_field: id display: default: - display_plugin: default id: default display_title: Master + display_plugin: default position: 1 display_options: - access: - type: perm - options: - perm: 'view maillog' - cache: - type: none - options: { } - query: - type: views_query - options: - disable_sql_rewrite: false - distinct: false - query_comment: '' - query_tags: { } - exposed_form: - type: basic - options: - submit_button: Apply - reset_button: false - reset_button_label: Reset - exposed_sorts_label: 'Sort by' - expose_sort_order: true - sort_asc_label: Asc - sort_desc_label: Desc - pager: - type: full - options: - items_per_page: 10 - offset: 0 - id: 0 - total_pages: null - expose: - items_per_page: false - items_per_page_label: 'Items per page' - items_per_page_options: '5, 10, 20, 40, 60' - items_per_page_options_all: false - items_per_page_options_all_label: '- All -' - offset: false - offset_label: Offset - tags: - previous: '‹ previous' - next: 'next ›' - first: '« first' - last: 'last »' - quantity: 9 - style: - type: table - options: - grouping: { } - row_class: '' - default_row_class: true - override: true - sticky: false - caption: '' - summary: '' - description: '' - columns: - id: id - sent_date: sent_date - subject: subject - header_from: header_from - header_to: header_to - info: - id: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - sent_date: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - subject: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - header_from: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - header_to: - sortable: false - default_sort_order: asc - align: '' - separator: '' - empty_column: false - responsive: '' - default: '-1' - empty_table: true - row: - type: fields + title: 'Maillog overview' fields: id: id: id @@ -136,6 +35,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: standard label: '#' exclude: false alter: @@ -177,7 +77,6 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: standard sent_date: id: sent_date table: maillog @@ -185,6 +84,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: date label: Date exclude: false alter: @@ -229,7 +129,6 @@ display: date_format: short custom_date_format: '' timezone: '' - plugin_id: date subject: id: subject table: maillog @@ -237,6 +136,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: standard label: Subject exclude: false alter: @@ -278,7 +178,6 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: standard header_from: id: header_from table: maillog @@ -286,6 +185,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: standard label: From exclude: false alter: @@ -327,7 +227,6 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: standard header_to: id: header_to table: maillog @@ -335,6 +234,7 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: standard label: To exclude: false alter: @@ -376,8 +276,56 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - plugin_id: standard - filters: { } + pager: + type: full + options: + offset: 0 + items_per_page: 10 + total_pages: null + id: 0 + tags: + next: 'next ›' + previous: '‹ previous' + first: '« first' + last: 'last »' + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 20, 40, 60' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + quantity: 9 + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: perm + options: + perm: 'view maillog' + cache: + type: none + options: { } + empty: + area_text_custom: + id: area_text_custom + table: views + field: area_text_custom + relationship: none + group_type: group + admin_label: '' + plugin_id: text_custom + empty: true + content: 'There are no mail logs in the database.' + tokenize: false sorts: sent_date: id: sent_date @@ -386,60 +334,112 @@ display: relationship: none group_type: group admin_label: '' + plugin_id: date order: DESC - exposed: false expose: label: '' field_identifier: sent_date + exposed: false granularity: second - plugin_id: date - title: 'Maillog overview' + arguments: { } + filters: { } + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + columns: + id: id + sent_date: sent_date + subject: subject + header_from: header_from + header_to: header_to + default: '-1' + info: + id: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + sent_date: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + subject: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + header_from: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + header_to: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + override: true + sticky: false + summary: '' + empty_table: true + caption: '' + description: '' + row: + type: fields + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + query_tags: { } + relationships: { } header: { } footer: { } - empty: - area_text_custom: - id: area_text_custom - table: views - field: area_text_custom - relationship: none - group_type: group - admin_label: '' - empty: true - tokenize: false - content: 'There are no mail logs in the database.' - plugin_id: text_custom - relationships: { } - arguments: { } display_extenders: { } cache_metadata: + max-age: 0 contexts: - 'languages:language_interface' - url.query_args - user.permissions - cacheable: false - max-age: 0 tags: { } + cacheable: false page_1: - display_plugin: page id: page_1 display_title: Page + display_plugin: page position: 1 display_options: + display_extenders: { } path: admin/reports/maillog menu: type: normal title: Maillog description: '' - parent: system.admin_reports weight: 0 - context: '0' menu_name: admin - display_extenders: { } + parent: system.admin_reports + context: '0' cache_metadata: + max-age: 0 contexts: - 'languages:language_interface' - url.query_args - user.permissions - cacheable: false - max-age: 0 tags: { } + cacheable: false diff --git a/config/acquia_prod/captcha.settings.yml b/config/acquia_prod/captcha.settings.yml index 7dda21a0c3..0ff42afcc9 100644 --- a/config/acquia_prod/captcha.settings.yml +++ b/config/acquia_prod/captcha.settings.yml @@ -1,12 +1,12 @@ _core: default_config_hash: _UaIWu0_ZD3lUs97wlFC2Koi-o7Bex69Xr9q36nJtkY -enabled_default: 0 default_challenge: captcha/Math description: 'This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.' -administration_mode: false -allow_on_admin_pages: false add_captcha_description: true default_validation: 1 persistence: 1 enable_stats: false log_wrong_responses: false +enabled_default: 0 +administration_mode: false +allow_on_admin_pages: false diff --git a/config/acquia_stage/captcha.settings.yml b/config/acquia_stage/captcha.settings.yml index 7dda21a0c3..a8de10683e 100644 --- a/config/acquia_stage/captcha.settings.yml +++ b/config/acquia_stage/captcha.settings.yml @@ -1,12 +1,12 @@ _core: default_config_hash: _UaIWu0_ZD3lUs97wlFC2Koi-o7Bex69Xr9q36nJtkY -enabled_default: 0 default_challenge: captcha/Math description: 'This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.' administration_mode: false -allow_on_admin_pages: false -add_captcha_description: true default_validation: 1 persistence: 1 enable_stats: false log_wrong_responses: false +enabled_default: 0 +allow_on_admin_pages: false +add_captcha_description: true diff --git a/config/default/core.menu.static_menu_link_overrides.yml b/config/default/core.menu.static_menu_link_overrides.yml index 5421dd045e..25698f429b 100644 --- a/config/default/core.menu.static_menu_link_overrides.yml +++ b/config/default/core.menu.static_menu_link_overrides.yml @@ -14,14 +14,14 @@ definitions: expanded: false enabled: false user__logout: - enabled: false menu_name: account parent: '' - expanded: false weight: 10 + expanded: false + enabled: false samlauth__saml_controller_logout__logout: - enabled: true menu_name: account parent: '' weight: 10 expanded: false + enabled: true diff --git a/config/default/salesforce_mapping.salesforce_mapping.metrolist_development.yml b/config/default/salesforce_mapping.salesforce_mapping.metrolist_development.yml index 547ec1e9cc..c4efb17da8 100644 --- a/config/default/salesforce_mapping.salesforce_mapping.metrolist_development.yml +++ b/config/default/salesforce_mapping.salesforce_mapping.metrolist_development.yml @@ -16,6 +16,7 @@ push_frequency: 0 push_limit: 0 push_retries: 3 pull_where_clause: '' +pull_record_type_filter: { } sync_triggers: push_create: false push_update: false diff --git a/config/default/salesforce_mapping.salesforce_mapping.metrolist_unit.yml b/config/default/salesforce_mapping.salesforce_mapping.metrolist_unit.yml index 4f9c4e618a..80605d26eb 100644 --- a/config/default/salesforce_mapping.salesforce_mapping.metrolist_unit.yml +++ b/config/default/salesforce_mapping.salesforce_mapping.metrolist_unit.yml @@ -16,6 +16,7 @@ push_frequency: 0 push_limit: 0 push_retries: 3 pull_where_clause: '' +pull_record_type_filter: { } sync_triggers: push_create: false push_update: false diff --git a/config/default/webform.webform.metrolist_listing.yml b/config/default/webform.webform.metrolist_listing.yml index f07f9e0910..ccb504c83c 100644 --- a/config/default/webform.webform.metrolist_listing.yml +++ b/config/default/webform.webform.metrolist_listing.yml @@ -1626,13 +1626,6 @@ handlers: theme_name: '' parameters: { } debug: false - manage_and_post_a_submission: - id: post_metrolist_listing_submission - handler_id: manage_and_post_a_submission - label: 'Manage and post a Submission' - notes: '' - status: true - conditions: { } confirmation_to_submitter: id: remote_post handler_id: confirmation_to_submitter @@ -1797,4 +1790,12 @@ handlers: message: '' messages: { } error_url: '' + manage_and_post_a_submission: + id: post_metrolist_listing_submission + handler_id: manage_and_post_a_submission + label: 'Manage and post a Submission' + notes: '' + status: true + conditions: { } + settings: { } variants: { } From c528021233000bbaa70c9375a878434fbbd9ac31 Mon Sep 17 00:00:00 2001 From: David Upton Date: Wed, 4 Oct 2023 10:02:04 -0400 Subject: [PATCH 06/16] DIG-3198 Drupal contrib packages updated --- composer.lock | 344 +++++++++++++++++++++++++------------------------- 1 file changed, 171 insertions(+), 173 deletions(-) diff --git a/composer.lock b/composer.lock index 31b2289031..9478b186cb 100644 --- a/composer.lock +++ b/composer.lock @@ -1364,16 +1364,16 @@ }, { "name": "doctrine/collections", - "version": "2.1.3", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "3023e150f90a38843856147b58190aa8b46cc155" + "reference": "72328a11443a0de79967104ad36ba7b30bded134" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/3023e150f90a38843856147b58190aa8b46cc155", - "reference": "3023e150f90a38843856147b58190aa8b46cc155", + "url": "https://api.github.com/repos/doctrine/collections/zipball/72328a11443a0de79967104ad36ba7b30bded134", + "reference": "72328a11443a0de79967104ad36ba7b30bded134", "shasum": "" }, "require": { @@ -1381,7 +1381,7 @@ "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^10.0", + "doctrine/coding-standard": "^12", "ext-json": "*", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.0", @@ -1430,7 +1430,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.1.3" + "source": "https://github.com/doctrine/collections/tree/2.1.4" }, "funding": [ { @@ -1446,20 +1446,20 @@ "type": "tidelift" } ], - "time": "2023-07-06T15:15:36+00:00" + "time": "2023-10-03T09:22:33+00:00" }, { "name": "doctrine/deprecations", - "version": "v1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { @@ -1491,9 +1491,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" }, - "time": "2023-06-03T09:27:29+00:00" + "time": "2023-09-27T20:04:15+00:00" }, { "name": "doctrine/lexer", @@ -1915,17 +1915,17 @@ }, { "name": "drupal/admin_toolbar", - "version": "3.4.1", + "version": "3.4.2", "source": { "type": "git", "url": "https://git.drupalcode.org/project/admin_toolbar.git", - "reference": "3.4.1" + "reference": "3.4.2" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/admin_toolbar-3.4.1.zip", - "reference": "3.4.1", - "shasum": "bcb15ab40016becdb3ac8f21d7d1a721f48f3577" + "url": "https://ftp.drupal.org/files/projects/admin_toolbar-3.4.2.zip", + "reference": "3.4.2", + "shasum": "f5a008e5c73f5a11c6c8067c0ea6ebb76aa33854" }, "require": { "drupal/core": "^9.2 || ^10" @@ -1936,8 +1936,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "3.4.1", - "datestamp": "1684944156", + "version": "3.4.2", + "datestamp": "1696006195", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2462,17 +2462,17 @@ }, { "name": "drupal/blazy", - "version": "2.17.0", + "version": "2.19.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/blazy.git", - "reference": "8.x-2.17" + "reference": "8.x-2.19" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/blazy-8.x-2.17.zip", - "reference": "8.x-2.17", - "shasum": "84ab9c7b7dc516890300f252dd64c8404e333d4b" + "url": "https://ftp.drupal.org/files/projects/blazy-8.x-2.19.zip", + "reference": "8.x-2.19", + "shasum": "e9ebd7fcddc108f8872a8a0c7bbfc0d64042a93f" }, "require": { "drupal/core": "^8.8 || ^9 || ^10" @@ -2483,8 +2483,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-2.17", - "datestamp": "1695019671", + "version": "8.x-2.19", + "datestamp": "1696141776", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -2786,7 +2786,7 @@ "extra": { "drupal": { "version": "1.0.2", - "datestamp": "1687261951", + "datestamp": "1695740655", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3417,17 +3417,17 @@ }, { "name": "drupal/content_moderation_notifications", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://git.drupalcode.org/project/content_moderation_notifications.git", - "reference": "8.x-3.5" + "reference": "8.x-3.6" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/content_moderation_notifications-8.x-3.5.zip", - "reference": "8.x-3.5", - "shasum": "aee4121e7cd4f68e88c1890b01402f1afb4120cd" + "url": "https://ftp.drupal.org/files/projects/content_moderation_notifications-8.x-3.6.zip", + "reference": "8.x-3.6", + "shasum": "f475721b95de8d0520053d3101c35c48ea22f61c" }, "require": { "drupal/core": "^9 || ^10" @@ -3438,8 +3438,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "8.x-3.5", - "datestamp": "1667948468", + "version": "8.x-3.6", + "datestamp": "1695836640", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -4980,17 +4980,17 @@ }, { "name": "drupal/environment_indicator", - "version": "4.0.15", + "version": "4.0.16", "source": { "type": "git", "url": "https://git.drupalcode.org/project/environment_indicator.git", - "reference": "4.0.15" + "reference": "4.0.16" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/environment_indicator-4.0.15.zip", - "reference": "4.0.15", - "shasum": "0db0591160af483a3c069aac955bed9e5eced252" + "url": "https://ftp.drupal.org/files/projects/environment_indicator-4.0.16.zip", + "reference": "4.0.16", + "shasum": "73f765f48da9340b31e936af302b01fdf62c644e" }, "require": { "drupal/core": "^9.2 || ^10" @@ -4998,8 +4998,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "4.0.15", - "datestamp": "1693578336", + "version": "4.0.16", + "datestamp": "1696345657", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -5012,19 +5012,21 @@ ], "authors": [ { - "name": "e0ipso", - "homepage": "https://www.drupal.org/user/550110" + "name": "Mateu Aguiló Bosch", + "homepage": "https://www.drupal.org/user/550110", + "email": "mateu@mateuaguilo.com" }, { - "name": "isholgueras", - "homepage": "https://www.drupal.org/user/733162" + "name": "Ignacio Sánchez", + "homepage": "https://www.drupal.org/user/733162", + "email": "nacho@isholgueras.com" }, { "name": "mrfelton", "homepage": "https://www.drupal.org/user/305669" } ], - "description": "Adds a color indicator for the different environments.", + "description": "Environment Indicator adds some visual cuest to indicate which copy of the site are you interacting with", "homepage": "https://www.drupal.org/project/environment_indicator", "support": { "source": "https://git.drupalcode.org/project/environment_indicator" @@ -5564,17 +5566,17 @@ }, { "name": "drupal/honeypot", - "version": "2.1.2", + "version": "2.1.3", "source": { "type": "git", "url": "https://git.drupalcode.org/project/honeypot.git", - "reference": "2.1.2" + "reference": "2.1.3" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/honeypot-2.1.2.zip", - "reference": "2.1.2", - "shasum": "9511fd6db37c153f2290950bf79611b27510cede" + "url": "https://ftp.drupal.org/files/projects/honeypot-2.1.3.zip", + "reference": "2.1.3", + "shasum": "101105029a10a574ef6017824182500ab9905856" }, "require": { "drupal/core": "^9.2 || ^10" @@ -5585,8 +5587,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "2.1.2", - "datestamp": "1664658244", + "version": "2.1.3", + "datestamp": "1695604754", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -6182,10 +6184,6 @@ "name": "bnjmnm", "homepage": "https://www.drupal.org/user/2369194" }, - { - "name": "ivnish", - "homepage": "https://www.drupal.org/user/3547706" - }, { "name": "jrockowitz", "homepage": "https://www.drupal.org/user/371407" @@ -6966,17 +6964,17 @@ }, { "name": "drupal/linkit", - "version": "6.1.0", + "version": "6.1.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/linkit.git", - "reference": "6.1.0" + "reference": "6.1.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/linkit-6.1.0.zip", - "reference": "6.1.0", - "shasum": "0b4c111651ef478091fc0d38360cee168ca17eee" + "url": "https://ftp.drupal.org/files/projects/linkit-6.1.1.zip", + "reference": "6.1.1", + "shasum": "e5beeca3331ba6e7862c5f8670e59909035200d4" }, "require": { "drupal/core": "^10.1" @@ -6988,8 +6986,8 @@ "type": "drupal-module", "extra": { "drupal": { - "version": "6.1.0", - "datestamp": "1688747800", + "version": "6.1.1", + "datestamp": "1696099840", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -11106,16 +11104,16 @@ "drupal/captcha": "^1 || ^2", "drupal/chosen": "3.0.x-dev", "drupal/ckeditor": "1.0.x-dev", - "drupal/clientside_validation": "*", + "drupal/clientside_validation": "^3 || ^4", "drupal/clientside_validation_jquery": "*", - "drupal/devel": "*", + "drupal/devel": "5.x-dev", "drupal/entity": "1.x-dev", - "drupal/entity_print": "*", + "drupal/entity_print": "2.x-dev", "drupal/group": "1.x-dev", "drupal/hal": "1 - 2", "drupal/jquery_ui": "1.x-dev", - "drupal/jquery_ui_checkboxradio": "*", - "drupal/jquery_ui_datepicker": "*", + "drupal/jquery_ui_checkboxradio": "2.x-dev", + "drupal/jquery_ui_datepicker": "1.x-dev", "drupal/mailsystem": "4.x-dev", "drupal/metatag": "1.x-dev", "drupal/paragraphs": "1.x-dev", @@ -11123,7 +11121,7 @@ "drupal/smtp": "1.x-dev", "drupal/styleguide": "^1 || ^2", "drupal/telephone_validation": "2.x-dev", - "drupal/token": "*", + "drupal/token": "1.x-dev", "drupal/variationcache": "1.x-dev", "drupal/webform_access": "*", "drupal/webform_attachment": "*", @@ -12657,16 +12655,16 @@ }, { "name": "justinrainbow/json-schema", - "version": "5.2.12", + "version": "v5.2.13", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", "shasum": "" }, "require": { @@ -12721,9 +12719,9 @@ ], "support": { "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" + "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" }, - "time": "2022-04-13T08:02:27+00:00" + "time": "2023-09-26T02:20:38+00:00" }, { "name": "league/container", @@ -14179,16 +14177,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.1", + "version": "1.24.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "9f854d275c2dbf84915a5c0ec9a2d17d2cd86b01" + "reference": "bcad8d995980440892759db0c32acae7c8e79442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9f854d275c2dbf84915a5c0ec9a2d17d2cd86b01", - "reference": "9f854d275c2dbf84915a5c0ec9a2d17d2cd86b01", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", + "reference": "bcad8d995980440892759db0c32acae7c8e79442", "shasum": "" }, "require": { @@ -14220,9 +14218,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" }, - "time": "2023-09-18T12:18:02+00:00" + "time": "2023-09-26T12:28:12+00:00" }, { "name": "picqer/php-barcode-generator", @@ -14502,16 +14500,16 @@ }, { "name": "psr/http-client", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { @@ -14548,9 +14546,9 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" + "source": "https://github.com/php-fig/http-client" }, - "time": "2023-04-10T20:12:12+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", @@ -15155,16 +15153,16 @@ }, { "name": "setasign/fpdi", - "version": "v2.4.1", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/Setasign/FPDI.git", - "reference": "f4ba73e5bc053ccc90b81717c5df1cb2ea7bae7b" + "reference": "ecf0459643ec963febfb9a5d529dcd93656006a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDI/zipball/f4ba73e5bc053ccc90b81717c5df1cb2ea7bae7b", - "reference": "f4ba73e5bc053ccc90b81717c5df1cb2ea7bae7b", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/ecf0459643ec963febfb9a5d529dcd93656006a4", + "reference": "ecf0459643ec963febfb9a5d529dcd93656006a4", "shasum": "" }, "require": { @@ -15215,7 +15213,7 @@ ], "support": { "issues": "https://github.com/Setasign/FPDI/issues", - "source": "https://github.com/Setasign/FPDI/tree/v2.4.1" + "source": "https://github.com/Setasign/FPDI/tree/v2.5.0" }, "funding": [ { @@ -15223,7 +15221,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T08:12:09+00:00" + "time": "2023-09-28T10:46:27+00:00" }, { "name": "sirbrillig/phpcs-variable-analysis", @@ -15556,16 +15554,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v6.3.4", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "68a5a9570806a087982f383f6109c5e925892a49" + "reference": "2ed62b3bf98346e1f45529a7b6be2196739bb993" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/68a5a9570806a087982f383f6109c5e925892a49", - "reference": "68a5a9570806a087982f383f6109c5e925892a49", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/2ed62b3bf98346e1f45529a7b6be2196739bb993", + "reference": "2ed62b3bf98346e1f45529a7b6be2196739bb993", "shasum": "" }, "require": { @@ -15617,7 +15615,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.3.4" + "source": "https://github.com/symfony/dependency-injection/tree/v6.3.5" }, "funding": [ { @@ -15633,7 +15631,7 @@ "type": "tidelift" } ], - "time": "2023-08-16T17:55:17+00:00" + "time": "2023-09-25T16:46:40+00:00" }, { "name": "symfony/deprecation-contracts", @@ -15704,16 +15702,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.3.2", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" + "reference": "1f69476b64fb47105c06beef757766c376b548c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", - "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", + "reference": "1f69476b64fb47105c06beef757766c376b548c4", "shasum": "" }, "require": { @@ -15758,7 +15756,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.3.2" + "source": "https://github.com/symfony/error-handler/tree/v6.3.5" }, "funding": [ { @@ -15774,7 +15772,7 @@ "type": "tidelift" } ], - "time": "2023-07-16T17:05:46+00:00" + "time": "2023-09-12T06:57:20+00:00" }, { "name": "symfony/event-dispatcher", @@ -15997,16 +15995,16 @@ }, { "name": "symfony/finder", - "version": "v6.3.3", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", "shasum": "" }, "require": { @@ -16041,7 +16039,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.3" + "source": "https://github.com/symfony/finder/tree/v6.3.5" }, "funding": [ { @@ -16057,20 +16055,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:31:44+00:00" + "time": "2023-09-26T12:56:25+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.3.4", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "cac1556fdfdf6719668181974104e6fcfa60e844" + "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cac1556fdfdf6719668181974104e6fcfa60e844", - "reference": "cac1556fdfdf6719668181974104e6fcfa60e844", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b50f5e281d722cb0f4c296f908bacc3e2b721957", + "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957", "shasum": "" }, "require": { @@ -16118,7 +16116,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.4" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.5" }, "funding": [ { @@ -16134,20 +16132,20 @@ "type": "tidelift" } ], - "time": "2023-08-22T08:20:46+00:00" + "time": "2023-09-04T21:33:54+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.4", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb" + "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", - "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f991a964368bee8d883e8d57ced4fe9fff04dfc", + "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc", "shasum": "" }, "require": { @@ -16231,7 +16229,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.4" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.5" }, "funding": [ { @@ -16247,20 +16245,20 @@ "type": "tidelift" } ], - "time": "2023-08-26T13:54:49+00:00" + "time": "2023-09-30T06:37:04+00:00" }, { "name": "symfony/mime", - "version": "v6.3.3", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98" + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", - "reference": "9a0cbd52baa5ba5a5b1f0cacc59466f194730f98", + "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", "shasum": "" }, "require": { @@ -16315,7 +16313,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.3.3" + "source": "https://github.com/symfony/mime/tree/v6.3.5" }, "funding": [ { @@ -16331,7 +16329,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-09-29T06:59:36+00:00" }, { "name": "symfony/polyfill-ctype", @@ -17303,16 +17301,16 @@ }, { "name": "symfony/routing", - "version": "v6.3.3", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a" + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a", - "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a", + "url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31", + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31", "shasum": "" }, "require": { @@ -17366,7 +17364,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.3" + "source": "https://github.com/symfony/routing/tree/v6.3.5" }, "funding": [ { @@ -17382,20 +17380,20 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-09-20T16:05:51+00:00" }, { "name": "symfony/serializer", - "version": "v6.3.4", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "96d28a58d5a128bf77c54534b380eb7c92c8f846" + "reference": "855fc058c8bdbb69f53834f2fdb3876c9bc0ab7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/96d28a58d5a128bf77c54534b380eb7c92c8f846", - "reference": "96d28a58d5a128bf77c54534b380eb7c92c8f846", + "url": "https://api.github.com/repos/symfony/serializer/zipball/855fc058c8bdbb69f53834f2fdb3876c9bc0ab7c", + "reference": "855fc058c8bdbb69f53834f2fdb3876c9bc0ab7c", "shasum": "" }, "require": { @@ -17460,7 +17458,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.3.4" + "source": "https://github.com/symfony/serializer/tree/v6.3.5" }, "funding": [ { @@ -17476,7 +17474,7 @@ "type": "tidelift" } ], - "time": "2023-08-24T14:35:28+00:00" + "time": "2023-09-29T16:18:53+00:00" }, { "name": "symfony/service-contracts", @@ -17562,16 +17560,16 @@ }, { "name": "symfony/string", - "version": "v6.3.2", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "53d1a83225002635bca3482fcbf963001313fb68" + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", - "reference": "53d1a83225002635bca3482fcbf963001313fb68", + "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", "shasum": "" }, "require": { @@ -17628,7 +17626,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.2" + "source": "https://github.com/symfony/string/tree/v6.3.5" }, "funding": [ { @@ -17644,7 +17642,7 @@ "type": "tidelift" } ], - "time": "2023-07-05T08:41:27+00:00" + "time": "2023-09-18T10:38:32+00:00" }, { "name": "symfony/translation-contracts", @@ -17726,16 +17724,16 @@ }, { "name": "symfony/validator", - "version": "v6.3.4", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "0c8435154920b9bbe93bece675234c244cadf73b" + "reference": "48e815ba3b5eb72e632588dbf7ea2dc4e608ee47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/0c8435154920b9bbe93bece675234c244cadf73b", - "reference": "0c8435154920b9bbe93bece675234c244cadf73b", + "url": "https://api.github.com/repos/symfony/validator/zipball/48e815ba3b5eb72e632588dbf7ea2dc4e608ee47", + "reference": "48e815ba3b5eb72e632588dbf7ea2dc4e608ee47", "shasum": "" }, "require": { @@ -17802,7 +17800,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.3.4" + "source": "https://github.com/symfony/validator/tree/v6.3.5" }, "funding": [ { @@ -17818,20 +17816,20 @@ "type": "tidelift" } ], - "time": "2023-08-17T15:49:05+00:00" + "time": "2023-09-29T07:41:15+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.4", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45" + "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2027be14f8ae8eae999ceadebcda5b4909b81d45", - "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3d9999376be5fea8de47752837a3e1d1c5f69ef5", + "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5", "shasum": "" }, "require": { @@ -17886,7 +17884,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.4" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.5" }, "funding": [ { @@ -17902,7 +17900,7 @@ "type": "tidelift" } ], - "time": "2023-08-24T14:51:05+00:00" + "time": "2023-09-12T10:11:35+00:00" }, { "name": "symfony/var-exporter", @@ -18750,16 +18748,16 @@ }, { "name": "composer/composer", - "version": "2.6.3", + "version": "2.6.4", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "ff477832e6d838a736556d4a39a3b80f4412abfd" + "reference": "d75d17c16a863438027d1d96401cddcd6aa5bb60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/ff477832e6d838a736556d4a39a3b80f4412abfd", - "reference": "ff477832e6d838a736556d4a39a3b80f4412abfd", + "url": "https://api.github.com/repos/composer/composer/zipball/d75d17c16a863438027d1d96401cddcd6aa5bb60", + "reference": "d75d17c16a863438027d1d96401cddcd6aa5bb60", "shasum": "" }, "require": { @@ -18844,7 +18842,7 @@ "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", "security": "https://github.com/composer/composer/security/policy", - "source": "https://github.com/composer/composer/tree/2.6.3" + "source": "https://github.com/composer/composer/tree/2.6.4" }, "funding": [ { @@ -18860,7 +18858,7 @@ "type": "tidelift" } ], - "time": "2023-09-15T07:38:22+00:00" + "time": "2023-09-29T08:54:47+00:00" }, { "name": "composer/metadata-minifier", @@ -20729,16 +20727,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.35", + "version": "1.10.37", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3" + "reference": "058ba07e92f744d4dcf6061ae75283d0c6456f2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e730e5facb75ffe09dfb229795e8c01a459f26c3", - "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/058ba07e92f744d4dcf6061ae75283d0c6456f2e", + "reference": "058ba07e92f744d4dcf6061ae75283d0c6456f2e", "shasum": "" }, "require": { @@ -20787,7 +20785,7 @@ "type": "tidelift" } ], - "time": "2023-09-19T15:27:56+00:00" + "time": "2023-10-02T16:18:37+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -22967,5 +22965,5 @@ "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.2.0" } From 2b478fec45bf2c23628baf225a4dfd3c81be95d9 Mon Sep 17 00:00:00 2001 From: David Upton Date: Wed, 4 Oct 2023 15:46:30 -0400 Subject: [PATCH 07/16] DIG-3198 Salesforce auth converted to key-module + envars --- ....key.salesforce_sandbox_oauth_consumer_key.yml | 15 +++++++++++++++ ...y.salesforce_sandbox_oauth_consumer_secret.yml | 15 +++++++++++++++ .../key.config_override.sf_oauth_consumer_key.yml | 14 ++++++++++++++ ...y.config_override.sf_oauth_consumer_secret.yml | 14 ++++++++++++++ .../key.key.salesforce_oauth_consumer_key.yml | 15 +++++++++++++++ .../key.key.salesforce_oauth_consumer_secret.yml | 15 +++++++++++++++ ....key.salesforce_sandbox_oauth_consumer_key.yml | 15 +++++++++++++++ ...y.salesforce_sandbox_oauth_consumer_secret.yml | 15 +++++++++++++++ .../salesforce.salesforce_auth.dnd_prod.yml | 13 +++++++++++++ ....key.salesforce_sandbox_oauth_consumer_key.yml | 15 +++++++++++++++ ...y.salesforce_sandbox_oauth_consumer_secret.yml | 15 +++++++++++++++ .../config_split.config_split.acquia_dev.yml | 2 ++ .../config_split.config_split.acquia_prod.yml | 2 ++ .../config_split.config_split.acquia_stage.yml | 2 ++ .../default/config_split.config_split.local.yml | 7 ++++--- .../key.config_override.sf_oauth_consumer_key.yml | 14 ++++++++++++++ ...y.config_override.sf_oauth_consumer_secret.yml | 14 ++++++++++++++ .../key.key.iam_dir_sso_test.yml | 2 +- .../salesforce.salesforce_auth.moh_sandbox.yml | 13 +++++++++++++ ....key.salesforce_sandbox_oauth_consumer_key.yml | 14 ++++++++++++++ ...y.salesforce_sandbox_oauth_consumer_secret.yml | 14 ++++++++++++++ 21 files changed, 241 insertions(+), 4 deletions(-) create mode 100644 config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_key.yml create mode 100644 config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_secret.yml create mode 100644 config/acquia_prod/key.config_override.sf_oauth_consumer_key.yml create mode 100644 config/acquia_prod/key.config_override.sf_oauth_consumer_secret.yml create mode 100644 config/acquia_prod/key.key.salesforce_oauth_consumer_key.yml create mode 100644 config/acquia_prod/key.key.salesforce_oauth_consumer_secret.yml create mode 100644 config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_key.yml create mode 100644 config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_secret.yml create mode 100644 config/acquia_prod/salesforce.salesforce_auth.dnd_prod.yml create mode 100644 config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_key.yml create mode 100644 config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_secret.yml create mode 100644 config/default/key.config_override.sf_oauth_consumer_key.yml create mode 100644 config/default/key.config_override.sf_oauth_consumer_secret.yml rename config/{local => default}/key.key.iam_dir_sso_test.yml (95%) create mode 100644 config/default/salesforce.salesforce_auth.moh_sandbox.yml create mode 100644 config/local/key.key.salesforce_sandbox_oauth_consumer_key.yml create mode 100644 config/local/key.key.salesforce_sandbox_oauth_consumer_secret.yml diff --git a/config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_key.yml b/config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_key.yml new file mode 100644 index 0000000000..3c86df128e --- /dev/null +++ b/config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_key.yml @@ -0,0 +1,15 @@ +uuid: 4a1141d0-f193-46e0-93cf-3aa40d062847 +langcode: en +status: true +dependencies: { } +id: salesforce_sandbox_oauth_consumer_key +label: 'Salesforce Sandbox OAuth Consumer Key' +description: '' +key_type: authentication +key_type_settings: { } +key_provider: env +key_provider_settings: + env_variable: sf_oauth_sandbox_ck + strip_line_breaks: true +key_input: text_field +key_input_settings: { } diff --git a/config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_secret.yml b/config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_secret.yml new file mode 100644 index 0000000000..ee47095cdf --- /dev/null +++ b/config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_secret.yml @@ -0,0 +1,15 @@ +uuid: fe3ee43c-fc30-4804-a3cb-615120c8ca89 +langcode: en +status: true +dependencies: { } +id: salesforce_sandbox_oauth_consumer_secret +label: 'Salesforce Sandbox OAuth Consumer Secret' +description: '' +key_type: authentication +key_type_settings: { } +key_provider: env +key_provider_settings: + env_variable: sf_oauth_sandbox_cs + strip_line_breaks: true +key_input: text_field +key_input_settings: { } diff --git a/config/acquia_prod/key.config_override.sf_oauth_consumer_key.yml b/config/acquia_prod/key.config_override.sf_oauth_consumer_key.yml new file mode 100644 index 0000000000..bccf5e4eae --- /dev/null +++ b/config/acquia_prod/key.config_override.sf_oauth_consumer_key.yml @@ -0,0 +1,14 @@ +uuid: 2ed6c7f7-2703-4f3b-b7bd-e8774b715557 +langcode: en +status: true +dependencies: + config: + - key.key.salesforce_oauth_consumer_key + - salesforce.salesforce_auth.dnd_prod +id: sf_oauth_consumer_key +label: 'SF OAuth PROD Consumer Key' +config_type: salesforce_auth +config_prefix: salesforce.salesforce_auth +config_name: dnd_prod +config_item: provider_settings.consumer_key +key_id: salesforce_oauth_consumer_key diff --git a/config/acquia_prod/key.config_override.sf_oauth_consumer_secret.yml b/config/acquia_prod/key.config_override.sf_oauth_consumer_secret.yml new file mode 100644 index 0000000000..15aa9002aa --- /dev/null +++ b/config/acquia_prod/key.config_override.sf_oauth_consumer_secret.yml @@ -0,0 +1,14 @@ +uuid: 2a3d3e9e-fbbe-4993-aef9-e354cf4fd963 +langcode: en +status: true +dependencies: + config: + - key.key.salesforce_oauth_consumer_secret + - salesforce.salesforce_auth.dnd_prod +id: sf_oauth_consumer_secret +label: 'SF OAuth PROD Consumer Secret' +config_type: salesforce_auth +config_prefix: salesforce.salesforce_auth +config_name: dnd_prod +config_item: provider_settings.consumer_secret +key_id: salesforce_oauth_consumer_secret diff --git a/config/acquia_prod/key.key.salesforce_oauth_consumer_key.yml b/config/acquia_prod/key.key.salesforce_oauth_consumer_key.yml new file mode 100644 index 0000000000..8e66db2603 --- /dev/null +++ b/config/acquia_prod/key.key.salesforce_oauth_consumer_key.yml @@ -0,0 +1,15 @@ +uuid: 4a1141d0-f193-46e0-93cf-3aa40d062847 +langcode: en +status: true +dependencies: { } +id: salesforce_oauth_consumer_key +label: 'Salesforce PROD OAuth Consumer Key' +description: '' +key_type: authentication +key_type_settings: { } +key_provider: env +key_provider_settings: + env_variable: sf_oauth_ck + strip_line_breaks: true +key_input: text_field +key_input_settings: { } diff --git a/config/acquia_prod/key.key.salesforce_oauth_consumer_secret.yml b/config/acquia_prod/key.key.salesforce_oauth_consumer_secret.yml new file mode 100644 index 0000000000..0fb35a635e --- /dev/null +++ b/config/acquia_prod/key.key.salesforce_oauth_consumer_secret.yml @@ -0,0 +1,15 @@ +uuid: fe3ee43c-fc30-4804-a3cb-615120c8ca89 +langcode: en +status: true +dependencies: { } +id: salesforce_oauth_consumer_secret +label: 'Salesforce PROD OAuth Consumer Secret' +description: '' +key_type: authentication +key_type_settings: { } +key_provider: env +key_provider_settings: + env_variable: sf_oauth_cs + strip_line_breaks: true +key_input: text_field +key_input_settings: { } diff --git a/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_key.yml b/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_key.yml new file mode 100644 index 0000000000..3c86df128e --- /dev/null +++ b/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_key.yml @@ -0,0 +1,15 @@ +uuid: 4a1141d0-f193-46e0-93cf-3aa40d062847 +langcode: en +status: true +dependencies: { } +id: salesforce_sandbox_oauth_consumer_key +label: 'Salesforce Sandbox OAuth Consumer Key' +description: '' +key_type: authentication +key_type_settings: { } +key_provider: env +key_provider_settings: + env_variable: sf_oauth_sandbox_ck + strip_line_breaks: true +key_input: text_field +key_input_settings: { } diff --git a/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_secret.yml b/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_secret.yml new file mode 100644 index 0000000000..ee47095cdf --- /dev/null +++ b/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_secret.yml @@ -0,0 +1,15 @@ +uuid: fe3ee43c-fc30-4804-a3cb-615120c8ca89 +langcode: en +status: true +dependencies: { } +id: salesforce_sandbox_oauth_consumer_secret +label: 'Salesforce Sandbox OAuth Consumer Secret' +description: '' +key_type: authentication +key_type_settings: { } +key_provider: env +key_provider_settings: + env_variable: sf_oauth_sandbox_cs + strip_line_breaks: true +key_input: text_field +key_input_settings: { } diff --git a/config/acquia_prod/salesforce.salesforce_auth.dnd_prod.yml b/config/acquia_prod/salesforce.salesforce_auth.dnd_prod.yml new file mode 100644 index 0000000000..00457217a5 --- /dev/null +++ b/config/acquia_prod/salesforce.salesforce_auth.dnd_prod.yml @@ -0,0 +1,13 @@ +uuid: 442cfa9c-2547-4d11-8b1b-4abbb026bbcc +langcode: en +status: true +dependencies: + module: + - salesforce_oauth +id: dnd_prod +label: 'DND PROD' +provider: oauth +provider_settings: + consumer_key: null + consumer_secret: null + login_url: 'https://boston-dnd.my.salesforce.com' diff --git a/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_key.yml b/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_key.yml new file mode 100644 index 0000000000..3c86df128e --- /dev/null +++ b/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_key.yml @@ -0,0 +1,15 @@ +uuid: 4a1141d0-f193-46e0-93cf-3aa40d062847 +langcode: en +status: true +dependencies: { } +id: salesforce_sandbox_oauth_consumer_key +label: 'Salesforce Sandbox OAuth Consumer Key' +description: '' +key_type: authentication +key_type_settings: { } +key_provider: env +key_provider_settings: + env_variable: sf_oauth_sandbox_ck + strip_line_breaks: true +key_input: text_field +key_input_settings: { } diff --git a/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_secret.yml b/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_secret.yml new file mode 100644 index 0000000000..ee47095cdf --- /dev/null +++ b/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_secret.yml @@ -0,0 +1,15 @@ +uuid: fe3ee43c-fc30-4804-a3cb-615120c8ca89 +langcode: en +status: true +dependencies: { } +id: salesforce_sandbox_oauth_consumer_secret +label: 'Salesforce Sandbox OAuth Consumer Secret' +description: '' +key_type: authentication +key_type_settings: { } +key_provider: env +key_provider_settings: + env_variable: sf_oauth_sandbox_cs + strip_line_breaks: true +key_input: text_field +key_input_settings: { } diff --git a/config/default/config_split.config_split.acquia_dev.yml b/config/default/config_split.config_split.acquia_dev.yml index 9b1843dbf1..45bea6f2a4 100644 --- a/config/default/config_split.config_split.acquia_dev.yml +++ b/config/default/config_split.config_split.acquia_dev.yml @@ -37,6 +37,8 @@ complete_list: - bos_theme.settings - config_ignore.settings - key.key.iam_dir_sso_test_ + - key.key.salesforce_sandbox_oauth_consumer_key + - key.key.salesforce_sandbox_oauth_consumer_secret - mailsystem.settings - mimemail.settings - system.mail diff --git a/config/default/config_split.config_split.acquia_prod.yml b/config/default/config_split.config_split.acquia_prod.yml index 4bc67965c9..916bac4cd5 100644 --- a/config/default/config_split.config_split.acquia_prod.yml +++ b/config/default/config_split.config_split.acquia_prod.yml @@ -30,6 +30,8 @@ complete_list: - bos_theme.settings - config_ignore.settings - key.key.iam_dir_sso_prod_ + - key.key.salesforce_oauth_consumer_key + - key.key.salesforce_oauth_consumer_secret - mailsystem.settings - mimemail.settings - purge.logger_channels diff --git a/config/default/config_split.config_split.acquia_stage.yml b/config/default/config_split.config_split.acquia_stage.yml index ce4e3cfe46..33f77a882c 100644 --- a/config/default/config_split.config_split.acquia_stage.yml +++ b/config/default/config_split.config_split.acquia_stage.yml @@ -30,6 +30,8 @@ complete_list: - bos_theme.settings - config_ignore.settings - key.key.iam_dir_sso_test_ + - key.key.salesforce_sandbox_oauth_consumer_key + - key.key.salesforce_sandbox_oauth_consumer_secret - mailsystem.settings - mimemail.settings - system.mail diff --git a/config/default/config_split.config_split.local.yml b/config/default/config_split.config_split.local.yml index 31a13f4f59..0c735e789e 100644 --- a/config/default/config_split.config_split.local.yml +++ b/config/default/config_split.config_split.local.yml @@ -33,14 +33,15 @@ complete_list: - bos_sql.settings - bos_theme.settings - config_ignore.settings - - key.key.iam_dir_sso_test_ + - key.key.salesforce_sandbox_oauth_consumer_key + - key.key.salesforce_sandbox_oauth_consumer_secret - mailsystem.settings - mimemail.settings - salesforce_logger.settings - - system.mail - samlauth.authentication - - samlauth_user_roles.mapping + - system.mail - views.view.samlauth_map + - samlauth_user_roles.mapping partial_list: - environment_indicator.indicator - metatag.metatag_defaults.global diff --git a/config/default/key.config_override.sf_oauth_consumer_key.yml b/config/default/key.config_override.sf_oauth_consumer_key.yml new file mode 100644 index 0000000000..c9d2143076 --- /dev/null +++ b/config/default/key.config_override.sf_oauth_consumer_key.yml @@ -0,0 +1,14 @@ +uuid: 2ed6c7f7-2703-4f3b-b7bd-e8774b715557 +langcode: en +status: true +dependencies: + config: + - key.key.salesforce_sandbox_oauth_consumer_key + - salesforce.salesforce_auth.moh_sandbox +id: sf_oauth_consumer_key +label: 'SF OAuth Consumer Key' +config_type: salesforce_auth +config_prefix: salesforce.salesforce_auth +config_name: moh_sandbox +config_item: provider_settings.consumer_key +key_id: salesforce_sandbox_oauth_consumer_key diff --git a/config/default/key.config_override.sf_oauth_consumer_secret.yml b/config/default/key.config_override.sf_oauth_consumer_secret.yml new file mode 100644 index 0000000000..4392807389 --- /dev/null +++ b/config/default/key.config_override.sf_oauth_consumer_secret.yml @@ -0,0 +1,14 @@ +uuid: 2a3d3e9e-fbbe-4993-aef9-e354cf4fd963 +langcode: en +status: true +dependencies: + config: + - key.key.salesforce_sandbox_oauth_consumer_secret + - salesforce.salesforce_auth.moh_sandbox +id: sf_oauth_consumer_secret +label: 'SF OAuth Consumer Secret' +config_type: salesforce_auth +config_prefix: salesforce.salesforce_auth +config_name: moh_sandbox +config_item: provider_settings.consumer_secret +key_id: salesforce_sandbox_oauth_consumer_secret diff --git a/config/local/key.key.iam_dir_sso_test.yml b/config/default/key.key.iam_dir_sso_test.yml similarity index 95% rename from config/local/key.key.iam_dir_sso_test.yml rename to config/default/key.key.iam_dir_sso_test.yml index afa09b5b6e..81ffb52a4f 100644 --- a/config/local/key.key.iam_dir_sso_test.yml +++ b/config/default/key.key.iam_dir_sso_test.yml @@ -11,6 +11,6 @@ key_type: asymmetric_public key_type_settings: { } key_provider: config key_provider_settings: - key_value: "" + key_value: '' key_input: textarea_field key_input_settings: { } diff --git a/config/default/salesforce.salesforce_auth.moh_sandbox.yml b/config/default/salesforce.salesforce_auth.moh_sandbox.yml new file mode 100644 index 0000000000..a859c769e7 --- /dev/null +++ b/config/default/salesforce.salesforce_auth.moh_sandbox.yml @@ -0,0 +1,13 @@ +uuid: 47a1f8b9-3ec7-4d86-9756-2e3049e3738b +langcode: en +status: true +dependencies: + module: + - salesforce_oauth +id: moh_sandbox +label: 'MOH Sandbox' +provider: oauth +provider_settings: + consumer_key: null + consumer_secret: null + login_url: 'https://test.salesforce.com' diff --git a/config/local/key.key.salesforce_sandbox_oauth_consumer_key.yml b/config/local/key.key.salesforce_sandbox_oauth_consumer_key.yml new file mode 100644 index 0000000000..4efd7670b8 --- /dev/null +++ b/config/local/key.key.salesforce_sandbox_oauth_consumer_key.yml @@ -0,0 +1,14 @@ +uuid: 4a1141d0-f193-46e0-93cf-3aa40d062847 +langcode: en +status: true +dependencies: { } +id: salesforce_sandbox_oauth_consumer_key +label: 'Salesforce Sandbox OAuth Consumer Key' +description: '' +key_type: authentication +key_type_settings: { } +key_provider: config +key_provider_settings: + key_value: '' +key_input: text_field +key_input_settings: { } diff --git a/config/local/key.key.salesforce_sandbox_oauth_consumer_secret.yml b/config/local/key.key.salesforce_sandbox_oauth_consumer_secret.yml new file mode 100644 index 0000000000..a7958df7dc --- /dev/null +++ b/config/local/key.key.salesforce_sandbox_oauth_consumer_secret.yml @@ -0,0 +1,14 @@ +uuid: fe3ee43c-fc30-4804-a3cb-615120c8ca89 +langcode: en +status: true +dependencies: { } +id: salesforce_sandbox_oauth_consumer_secret +label: 'Salesforce Sandbox OAuth Consumer Secret' +description: '' +key_type: authentication +key_type_settings: { } +key_provider: config +key_provider_settings: + key_value: '' +key_input: text_field +key_input_settings: { } From 168c2da6483811784e8a114e4160ede280b50244 Mon Sep 17 00:00:00 2001 From: David Upton Date: Wed, 4 Oct 2023 15:47:52 -0400 Subject: [PATCH 08/16] DIG-3198 Updates lando to use Drupal 10 recipe --- .lando.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.lando.yml b/.lando.yml index 5c8071f476..ad4b4d49b8 100644 --- a/.lando.yml +++ b/.lando.yml @@ -1,19 +1,22 @@ # Acquia friendly mods from https://github.com/lando/lando/issues/105 # See readme in ./build/readme.boston.md name: boston -recipe: drupal8 +recipe: drupal10 config: php: '8.1' webroot: docroot database: mysql:5.7 xdebug: true drupal: false + edge: false proxy: node: - patterns.lndo.site - node.lndo.site:3443 - cdn.lndo.site + appserver: + - boston.lndo.site services: node: From e28af3233d35be56a2fa0f51d289d38022f24175 Mon Sep 17 00:00:00 2001 From: David Upton Date: Wed, 4 Oct 2023 15:48:56 -0400 Subject: [PATCH 09/16] DIG-3198 Fixes minor local build issues --- scripts/deploy/cob_utilities.sh | 5 +++++ scripts/local/lando-build-drupal.sh | 12 ++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/scripts/deploy/cob_utilities.sh b/scripts/deploy/cob_utilities.sh index 5c32c1c8f4..ca08a2b084 100755 --- a/scripts/deploy/cob_utilities.sh +++ b/scripts/deploy/cob_utilities.sh @@ -321,6 +321,11 @@ function importConfigs() { ${drush_cmd} pm:enable config, config_split &>> ${TEMPFILE} directory="${REPO_ROOT}/config/default" + # If this is a local build, then force remove purge + # -> for some reason even though these modules are not in the config_split + # config, the modules are not uninstalled and drush CIM fails. + ${drush_cmd} pmu purge + # Import the configs - remember... config_split is enabled. # Sometimes the import needs to run multiple times to come up clear. IDK counter=1 diff --git a/scripts/local/lando-build-drupal.sh b/scripts/local/lando-build-drupal.sh index ed513ffb56..cd3b2a61bc 100755 --- a/scripts/local/lando-build-drupal.sh +++ b/scripts/local/lando-build-drupal.sh @@ -338,12 +338,6 @@ elif [[ "${build_local_database_source}" == "initialize" ]]; then fi printout "INFO" "Follow along at ${setup_logs}/config_import.log or ${LANDO_APP_URL}/sites/default/files/setup/config_import.log" -# Apply any pending database updates. -printout "ACTION" "Apply pending database updates etc." -${drush_cmd} ${ALIAS} cache:rebuild -${drush_cmd} -y updatedb &>>${setup_logs}/config_import.log && - printout "SUCCESS" "Updates Completed.\n" || printout "WARNING" "Database updates from contributed modules were not applied.\n" - printout "ACTION" "Importing configuration." importConfigs "@self" &>${setup_logs}/config_import.log @@ -372,6 +366,12 @@ else echo -e "${RedBG} ============================================================================== ${NC}\n" >>${setup_logs}/uli.log fi +# Apply any pending database updates. +printout "ACTION" "Apply pending database updates etc." +${drush_cmd} ${ALIAS} cache:rebuild +${drush_cmd} -y updatedb &>>${setup_logs}/config_import.log && + printout "SUCCESS" "Updates Completed.\n" || printout "WARNING" "Database updates from contributed modules were not applied.\n" + ######################################################## # STEP 6: FINALIZE ######################################################## From 6b09fd4bbad404d33d495d49570bef70cb052bcf Mon Sep 17 00:00:00 2001 From: David Upton Date: Wed, 4 Oct 2023 15:55:21 -0400 Subject: [PATCH 10/16] DIG-3198 Refactoring some config files to avoid re-sync during cim --- config/default/block.block.website_feedback_form.yml | 1 + ...rce_mapping.salesforce_mapping.metrolist_development.yml | 2 +- ...salesforce_mapping.salesforce_mapping.metrolist_unit.yml | 2 +- config/default/webform.webform.metrolist_listing.yml | 5 +++-- .../webform.webform.metrolist_listing_entry_form.yml | 6 ++---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/config/default/block.block.website_feedback_form.yml b/config/default/block.block.website_feedback_form.yml index f53b5e902f..0f46c8875d 100644 --- a/config/default/block.block.website_feedback_form.yml +++ b/config/default/block.block.website_feedback_form.yml @@ -23,6 +23,7 @@ settings: webform_id: website_feedback_form default_data: '' redirect: false + lazy: false visibility: request_path: id: request_path diff --git a/config/default/salesforce_mapping.salesforce_mapping.metrolist_development.yml b/config/default/salesforce_mapping.salesforce_mapping.metrolist_development.yml index c4efb17da8..e5bb7b91c9 100644 --- a/config/default/salesforce_mapping.salesforce_mapping.metrolist_development.yml +++ b/config/default/salesforce_mapping.salesforce_mapping.metrolist_development.yml @@ -16,7 +16,7 @@ push_frequency: 0 push_limit: 0 push_retries: 3 pull_where_clause: '' -pull_record_type_filter: { } +pull_record_type_filter: { } sync_triggers: push_create: false push_update: false diff --git a/config/default/salesforce_mapping.salesforce_mapping.metrolist_unit.yml b/config/default/salesforce_mapping.salesforce_mapping.metrolist_unit.yml index 80605d26eb..b53bbfd7c3 100644 --- a/config/default/salesforce_mapping.salesforce_mapping.metrolist_unit.yml +++ b/config/default/salesforce_mapping.salesforce_mapping.metrolist_unit.yml @@ -16,7 +16,7 @@ push_frequency: 0 push_limit: 0 push_retries: 3 pull_where_clause: '' -pull_record_type_filter: { } +pull_record_type_filter: { } sync_triggers: push_create: false push_update: false diff --git a/config/default/webform.webform.metrolist_listing.yml b/config/default/webform.webform.metrolist_listing.yml index ccb504c83c..69b16dbf1a 100644 --- a/config/default/webform.webform.metrolist_listing.yml +++ b/config/default/webform.webform.metrolist_listing.yml @@ -1796,6 +1796,7 @@ handlers: label: 'Manage and post a Submission' notes: '' status: true - conditions: { } - settings: { } + conditions: { } + weight: -50 + settings: { } variants: { } diff --git a/config/default/webform.webform.metrolist_listing_entry_form.yml b/config/default/webform.webform.metrolist_listing_entry_form.yml index 0f12c7cc1e..9cc904bd42 100644 --- a/config/default/webform.webform.metrolist_listing_entry_form.yml +++ b/config/default/webform.webform.metrolist_listing_entry_form.yml @@ -291,15 +291,13 @@ handlers: message: '' messages: { } error_url: '' - create_a_metrolist_listing_submission: id: make_metrolist_listing_submission handler_id: create_a_metrolist_listing_submission label: 'New Metrolist-Listing submission for email address in entry form submission.' notes: '' status: true - conditions: { } + conditions: { } weight: -50 - settings: { } - + settings: { } variants: { } From 86c0d04c608a2dccf6acae1c7cb29257a5149b32 Mon Sep 17 00:00:00 2001 From: David Upton Date: Wed, 4 Oct 2023 15:55:46 -0400 Subject: [PATCH 11/16] DIG-3198 Refactoring some config files to avoid re-sync during cim --- ...rce_mapping.salesforce_mapping.building_housing_projects.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/default/salesforce_mapping.salesforce_mapping.building_housing_projects.yml b/config/default/salesforce_mapping.salesforce_mapping.building_housing_projects.yml index 4bb8c56fa6..9524965b7d 100644 --- a/config/default/salesforce_mapping.salesforce_mapping.building_housing_projects.yml +++ b/config/default/salesforce_mapping.salesforce_mapping.building_housing_projects.yml @@ -13,7 +13,7 @@ pull_frequency: 0 push_frequency: 0 push_limit: 0 push_retries: 3 -pull_where_clause: 'RecordTypeID IN (''0120y0000007rw7'', ''012C0000000Hqw0'')' +pull_where_clause: "RecordTypeID IN ('0120y0000007rw7', '012C0000000Hqw0')" sync_triggers: push_create: true push_update: true From 96552dfb2d980ca9fef22c91c1279051fe714f98 Mon Sep 17 00:00:00 2001 From: David Upton Date: Wed, 4 Oct 2023 16:30:45 -0400 Subject: [PATCH 12/16] DIG-3198 Salesforce auth converted to key-module + envars --- ....key.salesforce_sandbox_oauth_consumer_key.yml | 15 --------------- ...y.salesforce_sandbox_oauth_consumer_secret.yml | 15 --------------- ....key.salesforce_sandbox_oauth_consumer_key.yml | 15 --------------- ...y.salesforce_sandbox_oauth_consumer_secret.yml | 15 --------------- .../default/config_split.config_split.local.yml | 4 ++-- ....key.salesforce_sandbox_oauth_consumer_key.yml | 0 ...y.salesforce_sandbox_oauth_consumer_secret.yml | 0 ....key.salesforce_sandbox_oauth_consumer_key.yml | 9 +++++++++ ...y.salesforce_sandbox_oauth_consumer_secret.yml | 9 +++++++++ ....key.salesforce_sandbox_oauth_consumer_key.yml | 14 -------------- ...y.salesforce_sandbox_oauth_consumer_secret.yml | 14 -------------- 11 files changed, 20 insertions(+), 90 deletions(-) delete mode 100644 config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_key.yml delete mode 100644 config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_secret.yml delete mode 100644 config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_key.yml delete mode 100644 config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_secret.yml rename config/{acquia_dev => default}/key.key.salesforce_sandbox_oauth_consumer_key.yml (100%) rename config/{acquia_dev => default}/key.key.salesforce_sandbox_oauth_consumer_secret.yml (100%) create mode 100644 config/local/config_split.patch.key.key.salesforce_sandbox_oauth_consumer_key.yml create mode 100644 config/local/config_split.patch.key.key.salesforce_sandbox_oauth_consumer_secret.yml delete mode 100644 config/local/key.key.salesforce_sandbox_oauth_consumer_key.yml delete mode 100644 config/local/key.key.salesforce_sandbox_oauth_consumer_secret.yml diff --git a/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_key.yml b/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_key.yml deleted file mode 100644 index 3c86df128e..0000000000 --- a/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_key.yml +++ /dev/null @@ -1,15 +0,0 @@ -uuid: 4a1141d0-f193-46e0-93cf-3aa40d062847 -langcode: en -status: true -dependencies: { } -id: salesforce_sandbox_oauth_consumer_key -label: 'Salesforce Sandbox OAuth Consumer Key' -description: '' -key_type: authentication -key_type_settings: { } -key_provider: env -key_provider_settings: - env_variable: sf_oauth_sandbox_ck - strip_line_breaks: true -key_input: text_field -key_input_settings: { } diff --git a/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_secret.yml b/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_secret.yml deleted file mode 100644 index ee47095cdf..0000000000 --- a/config/acquia_prod/key.key.salesforce_sandbox_oauth_consumer_secret.yml +++ /dev/null @@ -1,15 +0,0 @@ -uuid: fe3ee43c-fc30-4804-a3cb-615120c8ca89 -langcode: en -status: true -dependencies: { } -id: salesforce_sandbox_oauth_consumer_secret -label: 'Salesforce Sandbox OAuth Consumer Secret' -description: '' -key_type: authentication -key_type_settings: { } -key_provider: env -key_provider_settings: - env_variable: sf_oauth_sandbox_cs - strip_line_breaks: true -key_input: text_field -key_input_settings: { } diff --git a/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_key.yml b/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_key.yml deleted file mode 100644 index 3c86df128e..0000000000 --- a/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_key.yml +++ /dev/null @@ -1,15 +0,0 @@ -uuid: 4a1141d0-f193-46e0-93cf-3aa40d062847 -langcode: en -status: true -dependencies: { } -id: salesforce_sandbox_oauth_consumer_key -label: 'Salesforce Sandbox OAuth Consumer Key' -description: '' -key_type: authentication -key_type_settings: { } -key_provider: env -key_provider_settings: - env_variable: sf_oauth_sandbox_ck - strip_line_breaks: true -key_input: text_field -key_input_settings: { } diff --git a/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_secret.yml b/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_secret.yml deleted file mode 100644 index ee47095cdf..0000000000 --- a/config/acquia_stage/key.key.salesforce_sandbox_oauth_consumer_secret.yml +++ /dev/null @@ -1,15 +0,0 @@ -uuid: fe3ee43c-fc30-4804-a3cb-615120c8ca89 -langcode: en -status: true -dependencies: { } -id: salesforce_sandbox_oauth_consumer_secret -label: 'Salesforce Sandbox OAuth Consumer Secret' -description: '' -key_type: authentication -key_type_settings: { } -key_provider: env -key_provider_settings: - env_variable: sf_oauth_sandbox_cs - strip_line_breaks: true -key_input: text_field -key_input_settings: { } diff --git a/config/default/config_split.config_split.local.yml b/config/default/config_split.config_split.local.yml index 0c735e789e..472f8848f3 100644 --- a/config/default/config_split.config_split.local.yml +++ b/config/default/config_split.config_split.local.yml @@ -33,8 +33,6 @@ complete_list: - bos_sql.settings - bos_theme.settings - config_ignore.settings - - key.key.salesforce_sandbox_oauth_consumer_key - - key.key.salesforce_sandbox_oauth_consumer_secret - mailsystem.settings - mimemail.settings - salesforce_logger.settings @@ -44,6 +42,8 @@ complete_list: - samlauth_user_roles.mapping partial_list: - environment_indicator.indicator + - key.key.salesforce_sandbox_oauth_consumer_key + - key.key.salesforce_sandbox_oauth_consumer_secret - metatag.metatag_defaults.global - system.site - 'paragraphs.paragraphs_type.*' diff --git a/config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_key.yml b/config/default/key.key.salesforce_sandbox_oauth_consumer_key.yml similarity index 100% rename from config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_key.yml rename to config/default/key.key.salesforce_sandbox_oauth_consumer_key.yml diff --git a/config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_secret.yml b/config/default/key.key.salesforce_sandbox_oauth_consumer_secret.yml similarity index 100% rename from config/acquia_dev/key.key.salesforce_sandbox_oauth_consumer_secret.yml rename to config/default/key.key.salesforce_sandbox_oauth_consumer_secret.yml diff --git a/config/local/config_split.patch.key.key.salesforce_sandbox_oauth_consumer_key.yml b/config/local/config_split.patch.key.key.salesforce_sandbox_oauth_consumer_key.yml new file mode 100644 index 0000000000..95c0b827d8 --- /dev/null +++ b/config/local/config_split.patch.key.key.salesforce_sandbox_oauth_consumer_key.yml @@ -0,0 +1,9 @@ +adding: + key_provider: config + key_provider_settings: + key_value: '' +removing: + key_provider: env + key_provider_settings: + env_variable: sf_oauth_sandbox_ck + strip_line_breaks: true diff --git a/config/local/config_split.patch.key.key.salesforce_sandbox_oauth_consumer_secret.yml b/config/local/config_split.patch.key.key.salesforce_sandbox_oauth_consumer_secret.yml new file mode 100644 index 0000000000..d78c58b1e3 --- /dev/null +++ b/config/local/config_split.patch.key.key.salesforce_sandbox_oauth_consumer_secret.yml @@ -0,0 +1,9 @@ +adding: + key_provider: config + key_provider_settings: + key_value: '' +removing: + key_provider: env + key_provider_settings: + env_variable: sf_oauth_sandbox_cs + strip_line_breaks: true diff --git a/config/local/key.key.salesforce_sandbox_oauth_consumer_key.yml b/config/local/key.key.salesforce_sandbox_oauth_consumer_key.yml deleted file mode 100644 index 4efd7670b8..0000000000 --- a/config/local/key.key.salesforce_sandbox_oauth_consumer_key.yml +++ /dev/null @@ -1,14 +0,0 @@ -uuid: 4a1141d0-f193-46e0-93cf-3aa40d062847 -langcode: en -status: true -dependencies: { } -id: salesforce_sandbox_oauth_consumer_key -label: 'Salesforce Sandbox OAuth Consumer Key' -description: '' -key_type: authentication -key_type_settings: { } -key_provider: config -key_provider_settings: - key_value: '' -key_input: text_field -key_input_settings: { } diff --git a/config/local/key.key.salesforce_sandbox_oauth_consumer_secret.yml b/config/local/key.key.salesforce_sandbox_oauth_consumer_secret.yml deleted file mode 100644 index a7958df7dc..0000000000 --- a/config/local/key.key.salesforce_sandbox_oauth_consumer_secret.yml +++ /dev/null @@ -1,14 +0,0 @@ -uuid: fe3ee43c-fc30-4804-a3cb-615120c8ca89 -langcode: en -status: true -dependencies: { } -id: salesforce_sandbox_oauth_consumer_secret -label: 'Salesforce Sandbox OAuth Consumer Secret' -description: '' -key_type: authentication -key_type_settings: { } -key_provider: config -key_provider_settings: - key_value: '' -key_input: text_field -key_input_settings: { } From 7b38de3006de30535a1876f56bf77a9b91b42f5d Mon Sep 17 00:00:00 2001 From: David Upton Date: Thu, 5 Oct 2023 09:45:40 -0400 Subject: [PATCH 13/16] DIG-3198 Tidy up key config files --- config/acquia_dev/key.key.iam_dir_sso_test_.yml | 2 +- config/acquia_prod/key.key.iam_dir_sso_prod_.yml | 2 +- config/acquia_prod/key.key.salesforce_oauth_consumer_key.yml | 2 +- .../acquia_prod/key.key.salesforce_oauth_consumer_secret.yml | 2 +- config/acquia_stage/key.key.iam_dir_sso_test_.yml | 2 +- .../default/key.key.salesforce_sandbox_oauth_consumer_key.yml | 2 +- .../key.key.salesforce_sandbox_oauth_consumer_secret.yml | 2 +- .../key.key.iam_dir_sso_test_.yml} | 4 ++-- config/local/samlauth.authentication.yml | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) rename config/{default/key.key.iam_dir_sso_test.yml => local/key.key.iam_dir_sso_test_.yml} (76%) diff --git a/config/acquia_dev/key.key.iam_dir_sso_test_.yml b/config/acquia_dev/key.key.iam_dir_sso_test_.yml index ddaa4e60ad..b45db173a9 100644 --- a/config/acquia_dev/key.key.iam_dir_sso_test_.yml +++ b/config/acquia_dev/key.key.iam_dir_sso_test_.yml @@ -6,7 +6,7 @@ dependencies: - key_asymmetric id: iam_dir_sso_test_ label: 'IAM-DIR SSO (test)' -description: 'TEST X509 cert from IAM supplied IDP metadata' +description: 'TEST Environment X509 cert from IAM supplied IDP metadata' key_type: asymmetric_public key_type_settings: {} key_provider: env diff --git a/config/acquia_prod/key.key.iam_dir_sso_prod_.yml b/config/acquia_prod/key.key.iam_dir_sso_prod_.yml index b0f78061b6..d012999b26 100644 --- a/config/acquia_prod/key.key.iam_dir_sso_prod_.yml +++ b/config/acquia_prod/key.key.iam_dir_sso_prod_.yml @@ -6,7 +6,7 @@ dependencies: - key_asymmetric id: iam_dir_sso_prod_ label: 'IAM-DIR SSO (PROD)' -description: 'PROD X509 cert from IAM supplied IDP metadata' +description: 'PROD Environment X509 cert from IAM supplied IDP metadata' key_type: asymmetric_public key_type_settings: {} key_provider: env diff --git a/config/acquia_prod/key.key.salesforce_oauth_consumer_key.yml b/config/acquia_prod/key.key.salesforce_oauth_consumer_key.yml index 8e66db2603..fbba854b0b 100644 --- a/config/acquia_prod/key.key.salesforce_oauth_consumer_key.yml +++ b/config/acquia_prod/key.key.salesforce_oauth_consumer_key.yml @@ -4,7 +4,7 @@ status: true dependencies: { } id: salesforce_oauth_consumer_key label: 'Salesforce PROD OAuth Consumer Key' -description: '' +description: 'Oauth2.0 Consumer Key from the MOH Production Salesforce (uses envar)' key_type: authentication key_type_settings: { } key_provider: env diff --git a/config/acquia_prod/key.key.salesforce_oauth_consumer_secret.yml b/config/acquia_prod/key.key.salesforce_oauth_consumer_secret.yml index 0fb35a635e..e57b2bfa6b 100644 --- a/config/acquia_prod/key.key.salesforce_oauth_consumer_secret.yml +++ b/config/acquia_prod/key.key.salesforce_oauth_consumer_secret.yml @@ -4,7 +4,7 @@ status: true dependencies: { } id: salesforce_oauth_consumer_secret label: 'Salesforce PROD OAuth Consumer Secret' -description: '' +description: 'Oauth2.0 Consumer Secret from the MOH Production Salesforce (uses envar)' key_type: authentication key_type_settings: { } key_provider: env diff --git a/config/acquia_stage/key.key.iam_dir_sso_test_.yml b/config/acquia_stage/key.key.iam_dir_sso_test_.yml index ddaa4e60ad..b45db173a9 100644 --- a/config/acquia_stage/key.key.iam_dir_sso_test_.yml +++ b/config/acquia_stage/key.key.iam_dir_sso_test_.yml @@ -6,7 +6,7 @@ dependencies: - key_asymmetric id: iam_dir_sso_test_ label: 'IAM-DIR SSO (test)' -description: 'TEST X509 cert from IAM supplied IDP metadata' +description: 'TEST Environment X509 cert from IAM supplied IDP metadata' key_type: asymmetric_public key_type_settings: {} key_provider: env diff --git a/config/default/key.key.salesforce_sandbox_oauth_consumer_key.yml b/config/default/key.key.salesforce_sandbox_oauth_consumer_key.yml index 3c86df128e..858888d054 100644 --- a/config/default/key.key.salesforce_sandbox_oauth_consumer_key.yml +++ b/config/default/key.key.salesforce_sandbox_oauth_consumer_key.yml @@ -4,7 +4,7 @@ status: true dependencies: { } id: salesforce_sandbox_oauth_consumer_key label: 'Salesforce Sandbox OAuth Consumer Key' -description: '' +description: 'Oauth2.0 Consumer Key from the MOH FullCopy Sandbox (uses envar)' key_type: authentication key_type_settings: { } key_provider: env diff --git a/config/default/key.key.salesforce_sandbox_oauth_consumer_secret.yml b/config/default/key.key.salesforce_sandbox_oauth_consumer_secret.yml index ee47095cdf..7400a22980 100644 --- a/config/default/key.key.salesforce_sandbox_oauth_consumer_secret.yml +++ b/config/default/key.key.salesforce_sandbox_oauth_consumer_secret.yml @@ -4,7 +4,7 @@ status: true dependencies: { } id: salesforce_sandbox_oauth_consumer_secret label: 'Salesforce Sandbox OAuth Consumer Secret' -description: '' +description: 'Oauth2.0 Consumer Secret from the MOH FullCopy Sandbox (uses envar)' key_type: authentication key_type_settings: { } key_provider: env diff --git a/config/default/key.key.iam_dir_sso_test.yml b/config/local/key.key.iam_dir_sso_test_.yml similarity index 76% rename from config/default/key.key.iam_dir_sso_test.yml rename to config/local/key.key.iam_dir_sso_test_.yml index 81ffb52a4f..686737e867 100644 --- a/config/default/key.key.iam_dir_sso_test.yml +++ b/config/local/key.key.iam_dir_sso_test_.yml @@ -4,9 +4,9 @@ status: true dependencies: module: - key_asymmetric -id: iam_dir_sso_test +id: iam_dir_sso_test_ label: 'IAM-DIR SSO (test)' -description: 'TEST X509 cert from IAM supplied IDP metadata' +description: 'TEST Environment X509 cert from IAM supplied IDP metadata' key_type: asymmetric_public key_type_settings: { } key_provider: config diff --git a/config/local/samlauth.authentication.yml b/config/local/samlauth.authentication.yml index ab1b823e1b..ba1f700613 100644 --- a/config/local/samlauth.authentication.yml +++ b/config/local/samlauth.authentication.yml @@ -30,7 +30,7 @@ idp_single_sign_on_service: 'https://sso-test.boston.gov/idp/SSO.saml2' idp_single_log_out_service: 'https://sso-test.boston.gov/idp/startSLO.ping' idp_change_password_service: 'https://access-test.boston.gov/change-password' idp_certs: - - 'key:iam_dir_sso_test' + - 'key:iam_dir_sso_test_' idp_cert_encryption: '' unique_id_attribute: uid map_users: false From ab9cde58b1f42b56ffa717b05154971a627eb537 Mon Sep 17 00:00:00 2001 From: David Upton Date: Thu, 5 Oct 2023 12:20:25 -0400 Subject: [PATCH 14/16] DIG-3198 (hotfix) Fixes production salesforce config separation --- config/acquia_dev/config_ignore.settings.yml | 3 --- config/acquia_prod/config_ignore.settings.yml | 3 --- config/acquia_prod/config_split.patch.salesforce.settings.yml | 4 ++++ config/acquia_stage/config_ignore.settings.yml | 3 --- config/default/config_split.config_split.acquia_prod.yml | 4 ++++ config/local/config_ignore.settings.yml | 3 --- 6 files changed, 8 insertions(+), 12 deletions(-) create mode 100644 config/acquia_prod/config_split.patch.salesforce.settings.yml diff --git a/config/acquia_dev/config_ignore.settings.yml b/config/acquia_dev/config_ignore.settings.yml index 9db0e84b20..ea5f2b543d 100644 --- a/config/acquia_dev/config_ignore.settings.yml +++ b/config/acquia_dev/config_ignore.settings.yml @@ -8,11 +8,8 @@ ignored_config_entities: - bos_swiftype.settings - 'core.entity_view_display.node.metrolist_development.*' - geolocation_google_maps.settings - - 'key.key.iam_dir_sso*:key_type_settings|key_provider_settings.key_value' - 'paragraphs.paragraphs_type.*:dependencies.content|icon_uuid' - purge.logger_channels - - salesforce.salesforce_auth* - - salesforce.settings - slackposter.settings - node_elections.settings - block.block.website_feedback_form diff --git a/config/acquia_prod/config_ignore.settings.yml b/config/acquia_prod/config_ignore.settings.yml index 03f7ffef70..9791ce086d 100644 --- a/config/acquia_prod/config_ignore.settings.yml +++ b/config/acquia_prod/config_ignore.settings.yml @@ -8,11 +8,8 @@ ignored_config_entities: - bos_swiftype.settings - 'core.entity_view_display.node.metrolist_development.*' - geolocation_google_maps.settings - - 'key.key.iam_dir_sso*:key_type_settings|key_provider_settings.key_value' - 'paragraphs.paragraphs_type.*:dependencies.content|icon_uuid' - purge.logger_channels - - salesforce.salesforce_auth* - - salesforce.settings - slackposter.settings - node_elections.settings - bos_email.settings diff --git a/config/acquia_prod/config_split.patch.salesforce.settings.yml b/config/acquia_prod/config_split.patch.salesforce.settings.yml new file mode 100644 index 0000000000..ede1a86b60 --- /dev/null +++ b/config/acquia_prod/config_split.patch.salesforce.settings.yml @@ -0,0 +1,4 @@ +adding: + salesforce_auth_provider: dnd_prod +removing: + salesforce_auth_provider: moh_sandbox diff --git a/config/acquia_stage/config_ignore.settings.yml b/config/acquia_stage/config_ignore.settings.yml index f9c2b22b32..3dc4a27930 100644 --- a/config/acquia_stage/config_ignore.settings.yml +++ b/config/acquia_stage/config_ignore.settings.yml @@ -8,11 +8,8 @@ ignored_config_entities: - bos_swiftype.settings - 'core.entity_view_display.node.metrolist_development.*' - geolocation_google_maps.settings - - 'key.key.iam_dir_sso*:key_type_settings|key_provider_settings.key_value' - 'paragraphs.paragraphs_type.*:dependencies.content|icon_uuid' - purge.logger_channels - - salesforce.salesforce_auth* - - salesforce.settings - slackposter.settings - node_elections.settings - block.block.website_feedback_form diff --git a/config/default/config_split.config_split.acquia_prod.yml b/config/default/config_split.config_split.acquia_prod.yml index 4bc67965c9..4d0b1e78cb 100644 --- a/config/default/config_split.config_split.acquia_prod.yml +++ b/config/default/config_split.config_split.acquia_prod.yml @@ -29,12 +29,15 @@ complete_list: - bos_sql.settings - bos_theme.settings - config_ignore.settings + - key.config_override.sf_oauth_consumer_key + - key.config_override.sf_oauth_consumer_secret - key.key.iam_dir_sso_prod_ - mailsystem.settings - mimemail.settings - purge.logger_channels - purge.plugins - purge_queuer_coretags.settings + - salesforce.salesforce_auth.dnd_prod - samlauth.authentication - samlauth_user_roles.mapping - system.mail @@ -44,4 +47,5 @@ complete_list: partial_list: - environment_indicator.indicator - metatag.metatag_defaults.global + - salesforce_settings - system.site diff --git a/config/local/config_ignore.settings.yml b/config/local/config_ignore.settings.yml index 2b7a35634f..3061f6bffa 100644 --- a/config/local/config_ignore.settings.yml +++ b/config/local/config_ignore.settings.yml @@ -8,11 +8,8 @@ ignored_config_entities: - bos_swiftype.settings - 'core.entity_view_display.node.metrolist_development.*' - geolocation_google_maps.settings - - 'key.key.iam_dir_sso*:key_type_settings|key_provider_settings.key_value' - 'paragraphs.paragraphs_type.*:dependencies.content|icon_uuid' - purge.logger_channels - rollbar.settings - - salesforce.salesforce_auth* - - salesforce.settings - slackposter.settings - node_elections.settings From 7096b4c1d9bd7b54f6354edc17948efa70de461d Mon Sep 17 00:00:00 2001 From: David Upton Date: Thu, 5 Oct 2023 18:21:49 -0400 Subject: [PATCH 15/16] DIG-3198 (hotfix) Fixes production salesforce config separation --- config/default/salesforce.settings.yml | 16 ++++++++++++++++ config/travis/config_ignore.settings.yml | 2 -- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 config/default/salesforce.settings.yml diff --git a/config/default/salesforce.settings.yml b/config/default/salesforce.settings.yml new file mode 100644 index 0000000000..53209f7065 --- /dev/null +++ b/config/default/salesforce.settings.yml @@ -0,0 +1,16 @@ +_core: + default_config_hash: 52LglOGViK4vfNygfZbuM0OeLXOkRDd70jxnLOX4KOc +global_push_limit: 100 +pull_max_queue_size: 10000 +standalone: false +show_all_objects: true +use_latest: true +limit_mapped_object_revisions: 10 +salesforce_auth_provider: moh_sandbox +short_term_cache_lifetime: 300 +long_term_cache_lifetime: 86400 +rest_api_version: + label: '' + url: '' + version: '39.0' +endpoint_verification: true diff --git a/config/travis/config_ignore.settings.yml b/config/travis/config_ignore.settings.yml index a171f11fa9..956aa7ae32 100644 --- a/config/travis/config_ignore.settings.yml +++ b/config/travis/config_ignore.settings.yml @@ -10,6 +10,4 @@ ignored_config_entities: - geolocation_google_maps.settings - 'paragraphs.paragraphs_type.*:dependencies.content|icon_uuid' - purge.logger_channels - - salesforce.salesforce_auth.dnd_prod - - salesforce.settings - slackposter.settings From 26229bf3d6457472c714ee374c708399fe7cefc5 Mon Sep 17 00:00:00 2001 From: David Upton Date: Thu, 5 Oct 2023 18:52:02 -0400 Subject: [PATCH 16/16] DIG-3198 (hotfix) Fixes production salesforce config separation --- config/acquia_prod/salesforce.salesforce_auth.dnd_prod.yml | 4 ++-- config/default/salesforce.salesforce_auth.moh_sandbox.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/acquia_prod/salesforce.salesforce_auth.dnd_prod.yml b/config/acquia_prod/salesforce.salesforce_auth.dnd_prod.yml index 00457217a5..89f7c2df8c 100644 --- a/config/acquia_prod/salesforce.salesforce_auth.dnd_prod.yml +++ b/config/acquia_prod/salesforce.salesforce_auth.dnd_prod.yml @@ -8,6 +8,6 @@ id: dnd_prod label: 'DND PROD' provider: oauth provider_settings: - consumer_key: null - consumer_secret: null + consumer_key: '' + consumer_secret: '' login_url: 'https://boston-dnd.my.salesforce.com' diff --git a/config/default/salesforce.salesforce_auth.moh_sandbox.yml b/config/default/salesforce.salesforce_auth.moh_sandbox.yml index a859c769e7..a8298446a7 100644 --- a/config/default/salesforce.salesforce_auth.moh_sandbox.yml +++ b/config/default/salesforce.salesforce_auth.moh_sandbox.yml @@ -8,6 +8,6 @@ id: moh_sandbox label: 'MOH Sandbox' provider: oauth provider_settings: - consumer_key: null - consumer_secret: null + consumer_key: '' + consumer_secret: '' login_url: 'https://test.salesforce.com'
File IDTypeMatch StringOccuranceActions
{$page}{$result->content_type} ({$result->component}){$result->result} - View - -
{$result->nid}{$result->content_type}({$result->component}):
{$result->result}
{$result->mod_state} + Edit Usage +