Module: Aerogel::Auth

Defined in:
lib/aerogel/users/auth.rb

Constant Summary collapse

PROVIDERS =

PROVIDERS = {

  password: { name: "Password", gem: nil },
  github: { name: "GitHub", gem: 'omniauth-github' },
  facebook: { name: "Facebook", gem: 'omniauth-facebook' },
  twitter: { name: "Twitter", gem: 'omniauth-twitter' },
  linkedin: { name: "LinkedIn", gem: 'omniauth-linkedin-oauth2' },
  vkontakte: { name: "Vkontakte", gem: 'omniauth-vkontakte' }
}
nil

Class Method Summary collapse

Class Method Details

.enabled_providersObject

Returns list of enabled omniauth providers as symbols.

Example:

Aerogel::Auth.enabled_providers # => [:password, :github, :twitter]


28
29
30
31
32
33
34
35
36
37
# File 'lib/aerogel/users/auth.rb', line 28

def self.enabled_providers
  return @enabled_providers unless @enabled_providers.nil?
  @enabled_providers = []
  providers.each do |provider, opts|
    # always enable :password
    next unless provider == :password || Aerogel.config.auth.send( :"#{provider}?" )
    @enabled_providers << provider
  end
  @enabled_providers
end

.load_middleware(app) ⇒ Object

Loads OmniAuth middleware with enabled providers.



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/aerogel/users/auth.rb', line 51

def self.load_middleware( app )
  load_provider_gems
  app.use OmniAuth::Builder do
    # puts "** configuring OmniAuth"
    provider :password, model: User
    Aerogel::Auth.enabled_providers.each do |provider_key|
      next if provider_key == :password
      provider_config = app.config.auth.send(provider_key)
      provider provider_key, provider_config.api_key!, provider_config.api_secret!
      # puts "** configuring #{provider_key}: #{provider_config.api_key!}"
    end
    on_failure {|env| OmniAuth::FailureEndpointEx.new(env).redirect_to_failure }
  end
end

.load_provider_gemsObject

Loads gems for enabled providers.



41
42
43
44
45
46
47
# File 'lib/aerogel/users/auth.rb', line 41

def self.load_provider_gems
  enabled_providers.each do |provider_key|
    gem_name = providers[provider_key][:gem_name]
    # puts "** requiring #{provider_key}: #{gem_name}"
    require gem_name if gem_name
  end
end

.providersObject

Returns hash of registered omniauth providers.



18
19
20
21
# File 'lib/aerogel/users/auth.rb', line 18

def self.providers
  return @providers unless @providers.nil?
  @providers = Aerogel.config.auth.providers.to_hash
end