alchemy_cms 7.4.9 → 7.4.10

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.

Potentially problematic release.


This version of alchemy_cms might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 599bd5102e32131bf2e09816138effbe10a42f7a566b20d546daa5b9d10d6005
4
- data.tar.gz: ad5ae57a1ca11863b2467fa36fc4f87289b077e652e2de6b1e039f085255adf2
3
+ metadata.gz: 6bad48bb119901cb52a788e4eff97309b416af2dc7e8a696b82b679f835df987
4
+ data.tar.gz: 06f164f3d85053c79f9af5c60e5bcaa8f8bb9398007ed02bf381ce3f192b7e1c
5
5
  SHA512:
6
- metadata.gz: 2271fbba51fd74d0019764845a54a892ed896276a57c516b2b2261d6bc00ab02c2c13f4f71e02cd1b227f4a94ed08b262b72f0fac08dcadb114499e6a9021ffa
7
- data.tar.gz: c1ddedb6f0fc7d326b34ef88042aa505c4e6a882c0984a7fb728ae1d795d90f3ec16b6b8e00da450d70ef6f70576ab20f8bdc29224867f29ffd8a86c92d97982
6
+ metadata.gz: 37d2a38d099106c06f14914d8ed1e266b61d0ccb9efd50396e3dd8a9f824d0f802b2341152cd498450acec9643240d1d4f5edc51f735ebbd931edaddb2301996
7
+ data.tar.gz: d89e896f9a6a8584e302c41a7507abb59901f32bb5e1895368f4b9c5b52b541d7893dec7e9f13ebb8dd8ec96482139604b7955b84c1c132ca8ef015c74e52328
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 7.4.10 (2025-10-02)
4
+
5
+ - [7.4-stable] Fix admin page preview permissions [#3389](https://github.com/AlchemyCMS/alchemy_cms/pull/3389) ([alchemycms-bot](https://github.com/alchemycms-bot))
6
+ - [7.4] Sanititze filenames before upload [#3375](https://github.com/AlchemyCMS/alchemy_cms/pull/3375) ([tvdeyen](https://github.com/tvdeyen))
7
+ - [7.4] Allow importmap-rails v2.0 [#3374](https://github.com/AlchemyCMS/alchemy_cms/pull/3374) ([tvdeyen](https://github.com/tvdeyen))
8
+
3
9
  ## 7.4.9 (2025-09-04)
4
10
 
5
11
  - [7.4-stable] Alchemy TinyMCE: Remove frontend presence validation [#3361](https://github.com/AlchemyCMS/alchemy_cms/pull/3361) ([alchemycms-bot](https://github.com/alchemycms-bot))
data/alchemy_cms.gemspec CHANGED
@@ -40,7 +40,7 @@ Gem::Specification.new do |gem|
40
40
  gem.add_runtime_dependency "dragonfly", ["~> 1.4"]
41
41
  gem.add_runtime_dependency "dragonfly_svg", ["~> 0.0.4"]
42
42
  gem.add_runtime_dependency "gutentag", ["~> 2.2", ">= 2.2.1"]
43
- gem.add_runtime_dependency "importmap-rails", ["~> 1.2", ">= 1.2.1"]
43
+ gem.add_runtime_dependency "importmap-rails", [">= 1.2.1", "< 3.0"]
44
44
  gem.add_runtime_dependency "kaminari", ["~> 1.1"]
45
45
  gem.add_runtime_dependency "originator", ["~> 3.1"]
46
46
  gem.add_runtime_dependency "ransack", [">= 1.8", "< 5.0"]
@@ -66,6 +66,8 @@ module Alchemy
66
66
  # Used by page preview iframe in Page#edit view.
67
67
  #
68
68
  def show
69
+ authorize! :edit_content, @page
70
+
69
71
  Current.preview_page = @page
70
72
  # Setting the locale to pages language, so the page content has it's correct translations.
71
73
  ::I18n.locale = @page.language.locale
@@ -163,7 +163,7 @@ module Alchemy
163
163
  end
164
164
 
165
165
  def meta_robots
166
- "#{@page.robot_index? ? "" : "no"}index, #{@page.robot_follow? ? "" : "no"}follow"
166
+ "#{"no" unless @page.robot_index?}index, #{"no" unless @page.robot_follow?}follow"
167
167
  end
168
168
 
169
169
  private
@@ -96,6 +96,7 @@ module Alchemy
96
96
  message: Alchemy.t("not a valid file"),
97
97
  unless: -> { self.class.allowed_filetypes.include?("*") }
98
98
 
99
+ before_save :sanitize_file_name
99
100
  before_save :set_name, if: :file_name_changed?
100
101
 
101
102
  scope :with_file_type, ->(file_type) { where(file_mime_type: file_type) }
@@ -156,6 +157,10 @@ module Alchemy
156
157
 
157
158
  private
158
159
 
160
+ def sanitize_file_name
161
+ self.file_name = sanitized_filename(file_name)
162
+ end
163
+
159
164
  def set_name
160
165
  self.name = convert_to_humanized_name(file_name, file.ext)
161
166
  end
@@ -5,6 +5,7 @@ module Alchemy
5
5
  module PageNaming
6
6
  extend ActiveSupport::Concern
7
7
  include NameConversions
8
+
8
9
  RESERVED_URLNAMES = %w[admin messages new]
9
10
 
10
11
  included do
@@ -94,6 +94,7 @@ module Alchemy
94
94
  end
95
95
  end
96
96
 
97
+ before_save :sanitize_image_file_name
97
98
  # Create important thumbnails upfront
98
99
  after_create -> { PictureThumb.generate_thumbs!(self) if has_convertible_format? }
99
100
 
@@ -312,5 +313,9 @@ module Alchemy
312
313
  def image_file_dimensions
313
314
  "#{image_file_width}x#{image_file_height}"
314
315
  end
316
+
317
+ def sanitize_image_file_name
318
+ self.image_file_name = sanitized_filename(image_file_name)
319
+ end
315
320
  end
316
321
  end
@@ -3,6 +3,7 @@
3
3
  module Alchemy
4
4
  module Site::Layout
5
5
  extend ActiveSupport::Concern
6
+
6
7
  SITE_DEFINITIONS_FILE = Rails.root.join("config/alchemy/site_layouts.yml")
7
8
 
8
9
  module ClassMethods
@@ -22,5 +22,11 @@ module Alchemy
22
22
  def convert_to_humanized_name(name, suffix)
23
23
  name.gsub(/\.#{::Regexp.quote(suffix)}$/i, "").tr("_", " ").strip
24
24
  end
25
+
26
+ # Sanitizes a given filename by removing directory traversal attempts and HTML entities.
27
+ def sanitized_filename(file_name)
28
+ file_name = File.basename(file_name)
29
+ CGI.escapeHTML(file_name)
30
+ end
25
31
  end
26
32
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alchemy
4
- VERSION = "7.4.9"
4
+ VERSION = "7.4.10"
5
5
 
6
6
  def self.version
7
7
  VERSION
@@ -7,6 +7,7 @@ namespace :alchemy do
7
7
  desc "List Alchemy elements usage"
8
8
  task page_usage: :environment do
9
9
  include ActionView::Helpers::NumberHelper
10
+
10
11
  puts "\n Alchemy pages usage"
11
12
  results = Alchemy::Tasks::Usage.pages_count_by_type
12
13
  if results.any?
@@ -24,6 +25,7 @@ namespace :alchemy do
24
25
  desc "List Alchemy elements usage"
25
26
  task element_usage: :environment do
26
27
  include ActionView::Helpers::NumberHelper
28
+
27
29
  puts "\n Alchemy elements usage"
28
30
  results = Alchemy::Tasks::Usage.elements_count_by_name
29
31
  if results.any?
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.4.9
4
+ version: 7.4.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas von Deyen
@@ -314,22 +314,22 @@ dependencies:
314
314
  name: importmap-rails
315
315
  requirement: !ruby/object:Gem::Requirement
316
316
  requirements:
317
- - - "~>"
318
- - !ruby/object:Gem::Version
319
- version: '1.2'
320
317
  - - ">="
321
318
  - !ruby/object:Gem::Version
322
319
  version: 1.2.1
320
+ - - "<"
321
+ - !ruby/object:Gem::Version
322
+ version: '3.0'
323
323
  type: :runtime
324
324
  prerelease: false
325
325
  version_requirements: !ruby/object:Gem::Requirement
326
326
  requirements:
327
- - - "~>"
328
- - !ruby/object:Gem::Version
329
- version: '1.2'
330
327
  - - ">="
331
328
  - !ruby/object:Gem::Version
332
329
  version: 1.2.1
330
+ - - "<"
331
+ - !ruby/object:Gem::Version
332
+ version: '3.0'
333
333
  - !ruby/object:Gem::Dependency
334
334
  name: kaminari
335
335
  requirement: !ruby/object:Gem::Requirement
@@ -1409,7 +1409,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1409
1409
  version: '0'
1410
1410
  requirements:
1411
1411
  - ImageMagick (libmagick), v6.6 or greater.
1412
- rubygems_version: 3.6.9
1412
+ rubygems_version: 3.7.2
1413
1413
  specification_version: 4
1414
1414
  summary: A powerful, userfriendly and flexible CMS for Rails
1415
1415
  test_files: []