module Sorcery::Controller::Submodules::External

This submodule helps you login users from external auth providers such as Twitter. This is the controller part which handles the http requests and tokens passed between the app and the @provider.

Attributes

ca_file[RW]
external_providers[R]

Public Class Methods

external_providers=(providers) click to toggle source
# File lib/sorcery/controller/submodules/external.rb, line 37
              def external_providers=(providers)
                @external_providers = providers

                providers.each do |name|
                  class_eval <<-RUBY, __FILE__, __LINE__ + 1
                    def self.#{name}
                      @#{name} ||= Sorcery::Providers.const_get('#{name}'.to_s.classify).new
                    end
                  RUBY
                end
              end
included(base) click to toggle source
# File lib/sorcery/controller/submodules/external.rb, line 7
        def self.included(base)
          base.send(:include, InstanceMethods)

          require 'sorcery/providers/base'
          require 'sorcery/providers/facebook'
          require 'sorcery/providers/twitter'
          require 'sorcery/providers/vk'
          require 'sorcery/providers/linkedin'
          require 'sorcery/providers/liveid'
          require 'sorcery/providers/xing'
          require 'sorcery/providers/github'
          require 'sorcery/providers/heroku'
          require 'sorcery/providers/google'
          require 'sorcery/providers/jira'
          require 'sorcery/providers/salesforce'
          require 'sorcery/providers/paypal'
          require 'sorcery/providers/slack'
          require 'sorcery/providers/wechat'
          require 'sorcery/providers/microsoft'
          require 'sorcery/providers/instagram'
          require 'sorcery/providers/auth0'
          require 'sorcery/providers/line'
          require 'sorcery/providers/discord'
          require 'sorcery/providers/battlenet'

          Config.module_eval do
            class << self
              attr_reader :external_providers
              attr_accessor :ca_file

              def external_providers=(providers)
                @external_providers = providers

                providers.each do |name|
                  class_eval <<-RUBY, __FILE__, __LINE__ + 1
                    def self.#{name}
                      @#{name} ||= Sorcery::Providers.const_get('#{name}'.to_s.classify).new
                    end
                  RUBY
                end
              end

              def merge_external_defaults!
                @defaults.merge!(:@external_providers => [],
                                 :@ca_file => File.join(__dir__, '../../protocols/certs/ca-bundle.crt'))
              end
            end
            merge_external_defaults!
          end
        end
merge_external_defaults!() click to toggle source
# File lib/sorcery/controller/submodules/external.rb, line 49
def merge_external_defaults!
  @defaults.merge!(:@external_providers => [],
                   :@ca_file => File.join(__dir__, '../../protocols/certs/ca-bundle.crt'))
end