metadata_presenter 3.3.3 → 3.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc84786b2ed09dc03a4df7af7d096346b18bce085b4c7e9cf40d15bb0778000a
4
- data.tar.gz: 708f4c349746f9d80dfb405860dc7b37cd6773eef9cc86c931540848b5205b5b
3
+ metadata.gz: b1383e7705f46897aab384b9e5e5f8af3fa252a68292c71e7ab4fb9ba810f003
4
+ data.tar.gz: '08a34570f899f09c6e6390ab54730febc3c19215ce7ff685005ae6fa90028671'
5
5
  SHA512:
6
- metadata.gz: cc8b1eb03836a7a4e649e509e66018e0718ef90cedab16da9e11a9fab7412bc8a6c38f612e9c6c617641bc1a8483ea0dd21c14d53866c2d88449eeb491215cf0
7
- data.tar.gz: 1feebdd5af39db1c9a116e5d6419bef27b6131e234fa1dfb9910952a0927fff6f87d25115c614b5a4e5597def786bdf0471e71097e03fcb6fb4ed677bfb0fa4d
6
+ metadata.gz: 6a9461584ecb5471ef3f4e2dab87f24f10f22b317b0fcdd1f0b4b0126d2b84062f68159df671df6a6a358f99977b3dfd6fa48e1c5b0082028ad5c7834eabfc51
7
+ data.tar.gz: fadb737aaf8eb0a899bb0936268b3bea4187f318160ac99f396b9ce2904ae6b7f127f11e3ca3ffc4af91666db7d914c259497a55d3a2dff3f6eee026cbdff2f9
@@ -133,7 +133,6 @@ module MetadataPresenter
133
133
  end
134
134
 
135
135
  def answers_params
136
- params.permit(:page_slug, :save_for_later)
137
136
  params[:answers] ? params[:answers].permit! : {}
138
137
  end
139
138
 
@@ -44,11 +44,22 @@ module MetadataPresenter
44
44
 
45
45
  return {} unless file_details
46
46
 
47
- if file_details.is_a?(Hash) || file_details.is_a?(ActionController::Parameters)
48
- file_details.merge('original_filename' => sanitize(filename(update_filename(file_details['original_filename']))))
47
+ if file_details.is_a?(ActionController::Parameters)
48
+ unless file_details.permitted?
49
+ Rails.logger.warn("[PageAnswers#upload_answer] Permitting unfiltered params in component `#{component_id}`")
50
+ file_details.permit!
51
+ end
52
+
53
+ file_details.merge(
54
+ 'original_filename' => sanitize_filename(file_details['original_filename'])
55
+ )
56
+ elsif file_details.is_a?(Hash)
57
+ file_details.merge(
58
+ 'original_filename' => sanitize_filename(file_details['original_filename'])
59
+ )
49
60
  else
50
61
  {
51
- 'original_filename' => sanitize(filename(update_filename(file_details.original_filename))),
62
+ 'original_filename' => sanitize_filename(file_details.original_filename),
52
63
  'content_type' => file_details.content_type,
53
64
  'tempfile' => file_details.tempfile.path.to_s
54
65
  }
@@ -83,25 +94,27 @@ module MetadataPresenter
83
94
  return if answers[component_id].blank?
84
95
 
85
96
  if answers[component_id].is_a?(Array)
86
- answers[component_id].each { |answer| answer['original_filename'] = sanitize(filename(update_filename(answer['original_filename']))) }
97
+ answers[component_id].each { |answer| answer['original_filename'] = sanitize_filename(answer['original_filename']) }
87
98
  end
88
99
 
89
100
  answers[component_id] = answers[component_id].reject { |a| a['original_filename'].blank? }
90
101
  return answers
91
102
  end
92
103
 
104
+ return answers if answers.incoming_answer.blank?
105
+
93
106
  # uploading a new answer, this method will be called during multiple render operations
94
- if answers.incoming_answer.present? && answers.incoming_answer.is_a?(ActionController::Parameters)
95
- answers.incoming_answer[component_id].original_filename = sanitize(filename(update_filename(answers.incoming_answer[component_id].original_filename)))
107
+ if answers.incoming_answer.is_a?(ActionController::Parameters)
108
+ answers.incoming_answer[component_id].original_filename = sanitize_filename(answers.incoming_answer[component_id].original_filename)
96
109
  end
97
110
 
98
- if answers.incoming_answer.present? && answers.incoming_answer.is_a?(Hash)
99
- answers.incoming_answer['original_filename'] = sanitize(filename(update_filename(answers.incoming_answer['original_filename'])))
111
+ if answers.incoming_answer.is_a?(Hash)
112
+ answers.incoming_answer['original_filename'] = sanitize_filename(answers.incoming_answer['original_filename'])
100
113
  end
101
114
 
102
- if answers.incoming_answer.present? && answers.incoming_answer[component_id].is_a?(ActionDispatch::Http::UploadedFile)
115
+ if answers.incoming_answer[component_id].is_a?(ActionDispatch::Http::UploadedFile)
103
116
  answers.incoming_answer = {
104
- 'original_filename' => sanitize(filename(update_filename(answers.incoming_answer[component_id].original_filename))),
117
+ 'original_filename' => sanitize_filename(answers.incoming_answer[component_id].original_filename),
105
118
  'content_type' => answers.incoming_answer[component_id].content_type,
106
119
  'tempfile' => answers.incoming_answer[component_id].tempfile.path.to_s,
107
120
  'uuid' => SecureRandom.uuid
@@ -129,6 +142,10 @@ module MetadataPresenter
129
142
 
130
143
  private
131
144
 
145
+ def sanitize_filename(answer)
146
+ sanitize(filename(update_filename(answer)))
147
+ end
148
+
132
149
  def filename(path)
133
150
  return sanitize(path) if path.nil?
134
151
 
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '3.3.3'.freeze
2
+ VERSION = '3.3.4'.freeze
3
3
  end
@@ -120,7 +120,7 @@
120
120
  },
121
121
  "max_files": {
122
122
  "title": "Maximum files",
123
- "description": "The maximum number of fiels a user can upload",
123
+ "description": "The maximum number of files a user can upload",
124
124
  "type": "number",
125
125
  "minimum": 0
126
126
  },
@@ -464,9 +464,6 @@
464
464
  },
465
465
  "exclusive_minimum": {
466
466
  "$ref": "#/definitions/exclusive_minimum"
467
- },
468
- "max_files": {
469
- "$ref": "#/definitions/max_files"
470
467
  }
471
468
  }
472
469
  },
@@ -486,9 +483,6 @@
486
483
  },
487
484
  "exclusive_minimum": {
488
485
  "$ref": "#/definitions/errors_exclusive_minimum"
489
- },
490
- "max_files": {
491
- "$ref": "#/definitions/max_files"
492
486
  }
493
487
  }
494
488
  }
@@ -542,7 +536,7 @@
542
536
  "errors": {
543
537
  "properties": {
544
538
  "max_files": {
545
- "$ref": "#/definitions/max_files"
539
+ "$ref": "#/definitions/errors_max_files"
546
540
  }
547
541
  }
548
542
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.3
4
+ version: 3.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-22 00:00:00.000000000 Z
11
+ date: 2023-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder
@@ -266,16 +266,16 @@ dependencies:
266
266
  name: site_prism
267
267
  requirement: !ruby/object:Gem::Requirement
268
268
  requirements:
269
- - - '='
269
+ - - "<"
270
270
  - !ruby/object:Gem::Version
271
- version: '4.0'
271
+ version: '5.0'
272
272
  type: :development
273
273
  prerelease: false
274
274
  version_requirements: !ruby/object:Gem::Requirement
275
275
  requirements:
276
- - - '='
276
+ - - "<"
277
277
  - !ruby/object:Gem::Version
278
- version: '4.0'
278
+ version: '5.0'
279
279
  - !ruby/object:Gem::Dependency
280
280
  name: sqlite3
281
281
  requirement: !ruby/object:Gem::Requirement