Class: Verikloak::Audience::Railtie
- Inherits:
-
Rails::Railtie
- Object
- Rails::Railtie
- Verikloak::Audience::Railtie
- Extended by:
- RailtieHelpers
- Defined in:
- lib/verikloak/audience/railtie.rb
Overview
Rails integration for verikloak-audience.
This Railtie automatically inserts Middleware into the Rails middleware stack directly after Middleware when it is present.
If the core Verikloak middleware is not available, nothing is inserted.
You may still customize the placement in your application via
config.middleware.
Constant Summary collapse
- COMMANDS_SKIPPING_VALIDATION =
%w[generate g destroy d].freeze
Constants included from RailtieWarnings
Verikloak::Audience::RailtieWarnings::CORE_NOT_CONFIGURED_WARNING, Verikloak::Audience::RailtieWarnings::UNCONFIGURED_WARNING, Verikloak::Audience::RailtieWarnings::WARNING_MESSAGE
Class Attribute Summary collapse
-
.middleware_insertion_attempted ⇒ Object
Returns the value of attribute middleware_insertion_attempted.
-
.unconfigured_warning_emitted ⇒ Object
Returns the value of attribute unconfigured_warning_emitted.
Class Method Summary collapse
- .audiences_unconfigured?(config = Verikloak::Audience.config) ⇒ Boolean
- .insert_middleware(app) ⇒ Object
- .reset_middleware_insertion_flag! ⇒ Object
- .skip_configuration_validation? ⇒ Boolean
- .skip_unconfigured_validation?(config = Verikloak::Audience.config) ⇒ Boolean
-
.skip_validation?(config = Verikloak::Audience.config) ⇒ Boolean
Combined predicate used by the after-initialize hook and the middleware to decide whether configuration validation should run.
- .warn_unconfigured_once ⇒ Object
Methods included from RailtieHelpers
apply_verikloak_rails_configuration, discovery_url_configured?, first_cli_tokens, middleware_not_found_error?, verikloak_install_generator?
Methods included from RailtieWarnings
#log_warning, #warn_core_not_configured, #warn_missing_core_middleware, #warn_unconfigured
Class Attribute Details
.middleware_insertion_attempted ⇒ Object
Returns the value of attribute middleware_insertion_attempted.
201 202 203 |
# File 'lib/verikloak/audience/railtie.rb', line 201 def middleware_insertion_attempted @middleware_insertion_attempted end |
.unconfigured_warning_emitted ⇒ Object
Returns the value of attribute unconfigured_warning_emitted.
201 202 203 |
# File 'lib/verikloak/audience/railtie.rb', line 201 def unconfigured_warning_emitted @unconfigured_warning_emitted end |
Class Method Details
.audiences_unconfigured?(config = Verikloak::Audience.config) ⇒ Boolean
284 285 286 287 288 289 290 291 292 293 |
# File 'lib/verikloak/audience/railtie.rb', line 284 def self.audiences_unconfigured?(config = Verikloak::Audience.config) audiences = config.required_aud_list if audiences.empty? warn_unconfigured_once return true end false end |
.insert_middleware(app) ⇒ Object
226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 |
# File 'lib/verikloak/audience/railtie.rb', line 226 def self.insert_middleware(app) return unless defined?(::Verikloak::Middleware) if defined?(::Verikloak::Rails) && ::Verikloak::Rails.respond_to?(:config) discovery_url = ::Verikloak::Rails.config.discovery_url unless discovery_url_configured?(discovery_url) warn_core_not_configured return end end return if middleware_insertion_attempted middleware_stack = app.respond_to?(:config) ? app.config.middleware : app.middleware if middleware_stack.respond_to?(:include?) && middleware_stack.include?(::Verikloak::Audience::Middleware) return end self.middleware_insertion_attempted = true begin middleware_stack.insert_after ::Verikloak::Middleware, ::Verikloak::Audience::Middleware rescue StandardError => e raise unless middleware_not_found_error?(e) warn_missing_core_middleware end end |
.reset_middleware_insertion_flag! ⇒ Object
256 257 258 |
# File 'lib/verikloak/audience/railtie.rb', line 256 def self.reset_middleware_insertion_flag! self.middleware_insertion_attempted = false end |
.skip_configuration_validation? ⇒ Boolean
271 272 273 274 275 276 277 278 |
# File 'lib/verikloak/audience/railtie.rb', line 271 def self.skip_configuration_validation? tokens = first_cli_tokens return false if tokens.empty? return true if COMMANDS_SKIPPING_VALIDATION.include?(tokens.first) tokens.any? { |token| verikloak_install_generator?(token) } end |
.skip_unconfigured_validation?(config = Verikloak::Audience.config) ⇒ Boolean
280 281 282 |
# File 'lib/verikloak/audience/railtie.rb', line 280 def self.skip_unconfigured_validation?(config = Verikloak::Audience.config) audiences_unconfigured?(config) end |
.skip_validation?(config = Verikloak::Audience.config) ⇒ Boolean
Combined predicate used by the after-initialize hook and the middleware to decide whether configuration validation should run.
267 268 269 |
# File 'lib/verikloak/audience/railtie.rb', line 267 def self.skip_validation?(config = Verikloak::Audience.config) skip_configuration_validation? || skip_unconfigured_validation?(config) end |
.warn_unconfigured_once ⇒ Object
295 296 297 298 299 300 |
# File 'lib/verikloak/audience/railtie.rb', line 295 def self.warn_unconfigured_once return if unconfigured_warning_emitted self.unconfigured_warning_emitted = true warn_unconfigured end |