alchemy_cms 7.4.15 → 7.4.16
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/app/controllers/alchemy/api/nodes_controller.rb +1 -1
- data/app/models/alchemy/node.rb +21 -0
- data/lib/alchemy/permissions.rb +10 -0
- data/lib/alchemy/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d0a06fcd96871af12f69f0fc6ce8fca812e488cb8f237422b0d96d698b93e5d0
|
|
4
|
+
data.tar.gz: 9efa2b94685991f66d48f4a252b7386003e351a3f13c6ff4edfe4e020eb54ffc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 249f19b6adb1ac0e372969eeea89c475410490da05bb29d01450efd38b4c58d8ab4d819956391956ce8bc8fcc660b872cdf4793ffe17a5b0dee386d18cbb910a
|
|
7
|
+
data.tar.gz: 9ac152930b4533aa7598c069864f77f56d72178a56f114496d6fee66220639b84dc8aaf648d70e8b86bac79ab3ae201b5b9154094ef2a9dfc5dee8c4d7de7dd9
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 7.4.16 (2026-07-28)
|
|
4
|
+
|
|
5
|
+
## What's Changed
|
|
6
|
+
* [7.4] authorize nodes#index to prevent navigation tree disclosure by @tvdeyen in https://github.com/AlchemyCMS/alchemy_cms/pull/4099
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
**Full Changelog**: https://github.com/AlchemyCMS/alchemy_cms/compare/v7.4.15...v7.4.16
|
|
10
|
+
|
|
3
11
|
## 7.4.15 (2026-06-18)
|
|
4
12
|
|
|
5
13
|
## What's Changed
|
|
@@ -6,7 +6,7 @@ module Alchemy
|
|
|
6
6
|
before_action :authorize_access, only: [:move, :toggle_folded]
|
|
7
7
|
|
|
8
8
|
def index
|
|
9
|
-
@nodes = Node.
|
|
9
|
+
@nodes = Node.accessible_by(current_ability, :index)
|
|
10
10
|
@nodes = @nodes.includes(:parent)
|
|
11
11
|
@nodes = @nodes.where(language_id: params[:language_id]) if params[:language_id]
|
|
12
12
|
@nodes = @nodes.ransack(params[:filter]).result.order(:lft)
|
data/app/models/alchemy/node.rb
CHANGED
|
@@ -19,6 +19,27 @@ module Alchemy
|
|
|
19
19
|
foreign_key: :related_object_id,
|
|
20
20
|
inverse_of: :related_object
|
|
21
21
|
|
|
22
|
+
# All nodes of the current site whose language is published.
|
|
23
|
+
scope :from_current_public_site, -> {
|
|
24
|
+
joins(:language)
|
|
25
|
+
.where(Alchemy::Language.table_name => {site_id: Alchemy::Current.site})
|
|
26
|
+
.merge(Alchemy::Language.published)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
# Nodes an anonymous visitor may see: external links or nodes attached to a
|
|
30
|
+
# published, unrestricted page, scoped to the current site.
|
|
31
|
+
scope :available_to_guests, -> {
|
|
32
|
+
from_current_public_site.where(page: nil)
|
|
33
|
+
.or(from_current_public_site.where(page: Alchemy::Page.published.not_restricted))
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# Like #available_to_guests but including nodes attached to restricted pages,
|
|
37
|
+
# which logged in members are allowed to see.
|
|
38
|
+
scope :available_to_members, -> {
|
|
39
|
+
from_current_public_site.where(page: nil)
|
|
40
|
+
.or(from_current_public_site.where(page: Alchemy::Page.published))
|
|
41
|
+
}
|
|
42
|
+
|
|
22
43
|
before_validation :translate_root_menu_name, if: -> { root? }
|
|
23
44
|
before_validation :set_menu_type_from_root, unless: -> { root? }
|
|
24
45
|
|
data/lib/alchemy/permissions.rb
CHANGED
|
@@ -44,6 +44,11 @@ module Alchemy
|
|
|
44
44
|
can :read, Alchemy::Page, Alchemy::Page.published.not_restricted.from_current_site do |p|
|
|
45
45
|
p.public? && !p.restricted? && p.site == Alchemy::Current.site
|
|
46
46
|
end
|
|
47
|
+
|
|
48
|
+
can :read, Alchemy::Node, Alchemy::Node.available_to_guests do |node|
|
|
49
|
+
node.language.public? && node.language.site_id == Alchemy::Current.site&.id &&
|
|
50
|
+
(node.page.nil? || (node.page.public? && !node.page.restricted?))
|
|
51
|
+
end
|
|
47
52
|
end
|
|
48
53
|
end
|
|
49
54
|
|
|
@@ -67,6 +72,11 @@ module Alchemy
|
|
|
67
72
|
can :read, Alchemy::Page, Alchemy::Page.published.from_current_site do |p|
|
|
68
73
|
p.public? && p.site == Alchemy::Current.site
|
|
69
74
|
end
|
|
75
|
+
|
|
76
|
+
can :read, Alchemy::Node, Alchemy::Node.available_to_members do |node|
|
|
77
|
+
node.language.public? && node.language.site_id == Alchemy::Current.site&.id &&
|
|
78
|
+
(node.page.nil? || node.page.public?)
|
|
79
|
+
end
|
|
70
80
|
end
|
|
71
81
|
end
|
|
72
82
|
|
data/lib/alchemy/version.rb
CHANGED
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.
|
|
4
|
+
version: 7.4.16
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Thomas von Deyen
|
|
@@ -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: 4.0.
|
|
1412
|
+
rubygems_version: 4.0.16
|
|
1413
1413
|
specification_version: 4
|
|
1414
1414
|
summary: A powerful, userfriendly and flexible CMS for Rails
|
|
1415
1415
|
test_files: []
|