Sha256: 73f91fd3729ddabb78c37c4b6f394d575fc8fe0b886ee5b2a85b87484a515a35

Contents?: true

Size: 1.84 KB

Versions: 1

Compression:

Stored size: 1.84 KB

Contents

# frozen_string_literal: true

module FactoryBot
  module Instrumentation
    # A base engine application controller.
    class ApplicationController < ActionController::API
      # Extend our core functionality to support easy authentication logics
      include ActionController::HttpAuthentication::Basic::ControllerMethods
      include ActionController::HttpAuthentication::Digest::ControllerMethods
      include ActionController::HttpAuthentication::Token::ControllerMethods

      # For some reason the Rails engine may not find its partial templates as
      # it looks for wrong paths, so we add a fallback path to the view paths
      base_path = Pathname.new(File.expand_path('../../../views', __dir__))
      append_view_path base_path.join('factory_bot/instrumentation')

      # Allow the users to implement additional instrumentation-wide before
      # action logic, like authentication
      before_action do |_controller|
        if FactoryBot::Instrumentation.configuration.before_action
          instance_eval(
            &FactoryBot::Instrumentation.configuration.before_action
          )
        end
      end

      protected

      # A simple shortcut for Basic Auth on Rails 4.2+. Just configure the
      # username and password and you're ready to check the current request.
      #
      # @param username [String] the required user name
      # @param password [String] the required password of the user
      # @param realm [String] the authentication realm
      def basic_auth(username:, password:, realm: 'Instrumentation')
        authenticate_or_request_with_http_basic(realm) \
          do |given_name, given_password|
          ActiveSupport::SecurityUtils.secure_compare(given_name, username) &
            ActiveSupport::SecurityUtils.secure_compare(
              given_password, password
            )
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
factory_bot_instrumentation-1.1.2 app/controllers/factory_bot/instrumentation/application_controller.rb