Class: OmniAuth::Strategies::GitHubOrganization

Inherits:
OAuth2
  • Object
show all
Defined in:
lib/omniauth/strategies/github_organization.rb

Instance Method Summary collapse

Instance Method Details

#authorize_paramsObject



20
21
22
23
24
25
26
27
28
# File 'lib/omniauth/strategies/github_organization.rb', line 20

def authorize_params
  super.tap do |params|
    %w[scope client_options].each do |v|
      if request.params[v]
        params[v.to_sym] = request.params[v]
      end
    end
  end
end

#callback_phaseObject



30
31
32
33
# File 'lib/omniauth/strategies/github_organization.rb', line 30

def callback_phase
  return fail!(:user_denied, CallbackError.new(:user_denied, options['organization'])) unless organizations.include? options['organization']
  super
end

#callback_urlObject



89
90
91
# File 'lib/omniauth/strategies/github_organization.rb', line 89

def callback_url
  full_host + script_name + callback_path
end

#emailObject



66
67
68
# File 'lib/omniauth/strategies/github_organization.rb', line 66

def email
  email_access_allowed? ? primary_email : raw_info['email']
end

#email_access_allowed?Boolean

Returns:

  • (Boolean)


82
83
84
85
86
87
# File 'lib/omniauth/strategies/github_organization.rb', line 82

def email_access_allowed?
  return false unless options['scope']
  email_scopes = %w[user user:email]
  scopes = options['scope'].split(',')
  (scopes & email_scopes).any?
end

#emailsObject



76
77
78
79
80
# File 'lib/omniauth/strategies/github_organization.rb', line 76

def emails
  return [] unless email_access_allowed?
  access_token.options[:mode] = :query
  @emails ||= access_token.get('user/emails', headers: { 'Accept' => 'application/vnd.github.v3' }).parsed
end

#organizationsObject



35
36
37
38
39
# File 'lib/omniauth/strategies/github_organization.rb', line 35

def organizations
  access_token.options[:mode] = :query
  organizations = access_token.get('user/orgs', headers: { 'Accept' => 'application/vnd.github.v3' }).parsed
  organizations.map { |x| x['login'] }
end

#primary_emailObject



70
71
72
73
# File 'lib/omniauth/strategies/github_organization.rb', line 70

def primary_email
  primary = emails.find { |i| i['primary'] && i['verified'] }
  primary && primary['email'] || nil
end

#raw_infoObject



61
62
63
64
# File 'lib/omniauth/strategies/github_organization.rb', line 61

def raw_info
  access_token.options[:mode] = :query
  @raw_info ||= access_token.get('user').parsed
end

#request_phaseObject



16
17
18
# File 'lib/omniauth/strategies/github_organization.rb', line 16

def request_phase
  super
end