Sha256: ff5359663394a84f4b1688899c0fb185af3d55543957fc71e457a9cfc04ad940

Contents?: true

Size: 1006 Bytes

Versions: 6

Compression:

Stored size: 1006 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 DoorkeeperHub.client_mode? && scope_results(auth).empty?

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

        unless DoorkeeperHub.client_mode?
          scope_results(auth).each do |result|
            user.users_companies.find_or_create_by(company: result)
          end
        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

6 entries across 6 versions & 1 rubygems

Version Path
doorkeeper_hub-0.2.5 lib/doorkeeper_hub/saml.rb
doorkeeper_hub-0.2.4 lib/doorkeeper_hub/saml.rb
doorkeeper_hub-0.2.3 lib/doorkeeper_hub/saml.rb
doorkeeper_hub-0.2.2 lib/doorkeeper_hub/saml.rb
doorkeeper_hub-0.2.1 lib/doorkeeper_hub/saml.rb
doorkeeper_hub-0.2.0 lib/doorkeeper_hub/saml.rb