Sha256: 6912b3836d6967d9fe1a6244593a5ce604da05660fc0a77add5f9881d90edcc3

Contents?: true

Size: 1.04 KB

Versions: 9

Compression:

Stored size: 1.04 KB

Contents

module Rodauth
  module Rails
    module ControllerMethods
      def self.included(controller)
        # ActionController::API doesn't have helper methods
        if controller.respond_to?(:helper_method)
          controller.helper_method :rodauth, :current_account
        end
      end

      def current_account(name = nil)
        rodauth(name).rails_account || rodauth(name).login_required
      end

      def rodauth(name = nil)
        request.env.fetch ["rodauth", *name].join(".")
      end

      private

      # Adds response status to instrumentation payload for logging,
      # when calling a halting rodauth method inside a controller.
      def append_info_to_payload(payload)
        super
        if request.env["rodauth.rails.status"]
          payload[:status] = request.env.delete("rodauth.rails.status")
        end
      end

      def rodauth_response
        res = catch(:halt) { return yield }

        self.status = res[0]
        self.headers.merge! res[1]
        self.response_body = res[2]

        res
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rodauth-rails-1.5.5 lib/rodauth/rails/controller_methods.rb
rodauth-rails-1.5.4 lib/rodauth/rails/controller_methods.rb
rodauth-rails-1.5.2 lib/rodauth/rails/controller_methods.rb
rodauth-rails-1.5.1 lib/rodauth/rails/controller_methods.rb
rodauth-rails-1.5.0 lib/rodauth/rails/controller_methods.rb
rodauth-rails-1.4.2 lib/rodauth/rails/controller_methods.rb
rodauth-rails-1.4.1 lib/rodauth/rails/controller_methods.rb
rodauth-rails-1.4.0 lib/rodauth/rails/controller_methods.rb
rodauth-rails-1.3.1 lib/rodauth/rails/controller_methods.rb