Sha256: 503cd20191a7262eee3a7a24a388790d4a596ed2533f98b523f108448ce2c693

Contents?: true

Size: 916 Bytes

Versions: 4

Compression:

Stored size: 916 Bytes

Contents

require 'active_support/concern'

module DoorkeeperHub
  module Saml
    extend ActiveSupport::Concern

    included do
      devise :omniauthable, omniauth_providers: %i[saml]
    end

    class_methods do
      def from_omniauth(auth)
        return if scope_results(auth).empty?

        user = where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
          user.email = auth.info.email
        end

        scope_results(auth).each do |result|
          user.users_companies.find_or_create_by(company: result)
        end

        user
      end

      def scope_results(auth)
        @scope_results ||= DoorkeeperHub
                             .config.scope_model
                             .where(scope_query(auth))
      end

      def scope_query(auth)
        {
          DoorkeeperHub.token_name => auth.extra.raw_info[DoorkeeperHub.token_name]
        }
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
doorkeeper_hub-0.1.7 lib/doorkeeper_hub/saml.rb
doorkeeper_hub-0.1.6 lib/doorkeeper_hub/saml.rb
doorkeeper_hub-0.1.5 lib/doorkeeper_hub/saml.rb
doorkeeper_hub-0.1.4 lib/doorkeeper_hub/saml.rb