Sha256: f732bd9fa8049976d1839484979ba7e132d0634d488a6afd9d9599f7500a45c2

Contents?: true

Size: 1020 Bytes

Versions: 4

Compression:

Stored size: 1020 Bytes

Contents

# frozen_string_literal: true
module Omniauth
  module Rails
    module AuthorizationConcern
      def self.included(klass)
        klass.extend ClassMethods
      end

      module ClassMethods
        private

        def require_authorization(params)
          before_action { |c| c.require_authorization(params) }
        end
      end

      protected

      def require_authorization(params)
        if Configuration.dev_mode
          ::Rails.logger.info "Omniauth::Rails: dev_mode is enabled. Skipping 'require_authorization'"
          return
        end

        require_authentication # Require authentication before authorization.
        return if performed?
        render_403_forbidden unless authorized?(params)
      end

      private

      def authorized?(params)
        AuthorizationChecker.new(email: authenticated_email, params: params).authorized?
      end

      def render_403_forbidden
        render "omniauth/rails/forbidden", status: :forbidden, layout: false
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
omniauth-rails-0.5.0 app/controllers/omniauth/rails/authorization_concern.rb
omniauth-rails-0.4.0 app/controllers/omniauth/rails/authorization_concern.rb
omniauth-rails-0.3.0 app/controllers/omniauth/rails/authorization_concern.rb
omniauth-rails-0.2.0 app/controllers/omniauth/rails/authorization_concern.rb