verikloak-bff 0.2.1 → 0.2.2
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 +5 -0
- data/lib/verikloak/bff/rails.rb +81 -5
- data/lib/verikloak/bff/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: 8fbec3da2912582f3684c1682fb75b45f9d26c3a1ebf3b7a41d4a5392fbe36c1
|
|
4
|
+
data.tar.gz: d1b5b9f750bd3cdbbf3308f1581c8327c039f87b660cde73a799a83740f818ae
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 33655caab83ec29f7159264b660aadb878a61c3ca52c4f23e4256cdb30519384833d7ea8244de5c8252368227ef3999691eb1aa282d907c42e94db69fb39ecb3
|
|
7
|
+
data.tar.gz: d1442646ce08bd0a98ca211f781f0ba623d58d51323ed86492c01cee60086a27c5f27c1fd8d65e4b7ab5ea10c52a9bf6b4942e09c0be80cc8e4d250d6bfb4f48
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [0.2.2] - 2025-09-23
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- Improved middleware class extraction logic to reduce code duplication while maintaining functionality
|
|
14
|
+
|
|
10
15
|
## [0.2.1] - 2025-09-23
|
|
11
16
|
|
|
12
17
|
### Fixed
|
data/lib/verikloak/bff/rails.rb
CHANGED
|
@@ -29,6 +29,13 @@ module Verikloak
|
|
|
29
29
|
# logger: Rails.logger
|
|
30
30
|
# )
|
|
31
31
|
def insert_after_core(stack, logger: nil)
|
|
32
|
+
return false unless auto_insert_enabled?
|
|
33
|
+
|
|
34
|
+
unless core_present?(stack)
|
|
35
|
+
log_skip(logger)
|
|
36
|
+
return false
|
|
37
|
+
end
|
|
38
|
+
|
|
32
39
|
stack.insert_after(::Verikloak::Middleware, ::Verikloak::BFF::HeaderGuard)
|
|
33
40
|
true
|
|
34
41
|
rescue RuntimeError => e
|
|
@@ -38,6 +45,79 @@ module Verikloak
|
|
|
38
45
|
false
|
|
39
46
|
end
|
|
40
47
|
|
|
48
|
+
# Determine whether automatic insertion is enabled via Verikloak core configuration.
|
|
49
|
+
#
|
|
50
|
+
# When the core gem exposes +auto_insert_bff_header_guard+, respect that flag so
|
|
51
|
+
# consumers can opt out of automatic middleware wiring without triggering warnings.
|
|
52
|
+
# Any failures while reading configuration default to enabling insertion in order
|
|
53
|
+
# to preserve the previous behavior.
|
|
54
|
+
#
|
|
55
|
+
# @return [Boolean]
|
|
56
|
+
def auto_insert_enabled?
|
|
57
|
+
return true unless defined?(::Verikloak)
|
|
58
|
+
return true unless ::Verikloak.respond_to?(:config)
|
|
59
|
+
|
|
60
|
+
config = ::Verikloak.config
|
|
61
|
+
return true unless config
|
|
62
|
+
return config.auto_insert_bff_header_guard if config.respond_to?(:auto_insert_bff_header_guard)
|
|
63
|
+
|
|
64
|
+
true
|
|
65
|
+
rescue StandardError
|
|
66
|
+
true
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Detect whether the Verikloak core middleware is already present in the stack.
|
|
70
|
+
#
|
|
71
|
+
# @param stack [#include?, #each, nil]
|
|
72
|
+
# @return [Boolean]
|
|
73
|
+
def core_present?(stack)
|
|
74
|
+
return false unless stack
|
|
75
|
+
|
|
76
|
+
if stack.respond_to?(:include?)
|
|
77
|
+
begin
|
|
78
|
+
return true if stack.include?(::Verikloak::Middleware)
|
|
79
|
+
rescue StandardError
|
|
80
|
+
# Fall back to manual enumeration when include? is unsupported for this stack
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
return false unless stack.respond_to?(:each)
|
|
85
|
+
|
|
86
|
+
stack.each do |middleware|
|
|
87
|
+
return true if middleware_matches_core?(middleware)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
false
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Check whether a middleware entry represents the Verikloak core middleware.
|
|
94
|
+
#
|
|
95
|
+
# @param middleware [Object]
|
|
96
|
+
# @return [Boolean]
|
|
97
|
+
def middleware_matches_core?(middleware)
|
|
98
|
+
candidate = middleware.is_a?(Array) ? middleware.first : middleware
|
|
99
|
+
|
|
100
|
+
klass = extract_middleware_class(candidate)
|
|
101
|
+
|
|
102
|
+
klass == ::Verikloak::Middleware ||
|
|
103
|
+
(klass.is_a?(String) && klass == 'Verikloak::Middleware') ||
|
|
104
|
+
(klass.respond_to?(:name) && klass.name == 'Verikloak::Middleware')
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Extracts the class or class-like identifier from a middleware candidate.
|
|
108
|
+
#
|
|
109
|
+
# @param candidate [Object]
|
|
110
|
+
# @return [Class, String, Object]
|
|
111
|
+
def extract_middleware_class(candidate)
|
|
112
|
+
if candidate.respond_to?(:klass)
|
|
113
|
+
candidate.klass
|
|
114
|
+
elsif candidate.respond_to?(:name)
|
|
115
|
+
candidate.name
|
|
116
|
+
else
|
|
117
|
+
candidate
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
41
121
|
# Checks if the error indicates missing core Verikloak middleware
|
|
42
122
|
#
|
|
43
123
|
# Examines a RuntimeError to determine if it was caused by attempting
|
|
@@ -75,11 +155,7 @@ module Verikloak
|
|
|
75
155
|
[verikloak-bff] Skipping Verikloak::BFF::HeaderGuard insertion because Verikloak::Middleware is not present. Configure verikloak-rails discovery settings and restart once core verification is enabled.
|
|
76
156
|
MSG
|
|
77
157
|
|
|
78
|
-
|
|
79
|
-
logger.warn(message)
|
|
80
|
-
else
|
|
81
|
-
warn(message)
|
|
82
|
-
end
|
|
158
|
+
logger ? logger.warn(message) : warn(message)
|
|
83
159
|
end
|
|
84
160
|
end
|
|
85
161
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: verikloak-bff
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- taiyaky
|
|
@@ -98,7 +98,7 @@ metadata:
|
|
|
98
98
|
source_code_uri: https://github.com/taiyaky/verikloak-bff
|
|
99
99
|
changelog_uri: https://github.com/taiyaky/verikloak-bff/blob/main/CHANGELOG.md
|
|
100
100
|
bug_tracker_uri: https://github.com/taiyaky/verikloak-bff/issues
|
|
101
|
-
documentation_uri: https://rubydoc.info/gems/verikloak-bff/0.2.
|
|
101
|
+
documentation_uri: https://rubydoc.info/gems/verikloak-bff/0.2.2
|
|
102
102
|
rubygems_mfa_required: 'true'
|
|
103
103
|
rdoc_options: []
|
|
104
104
|
require_paths:
|