Class: OmniAuth::Strategies::Tequila

Inherits:
Object
  • Object
show all
Includes:
OmniAuth::Strategy
Defined in:
lib/omniauth/strategies/tequila.rb

Defined Under Namespace

Classes: TequilaFail

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#raw_infoObject Also known as: user_info

Returns the value of attribute raw_info.



11
12
13
# File 'lib/omniauth/strategies/tequila.rb', line 11

def raw_info
  @raw_info
end

Instance Method Details

#callback_phaseObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/omniauth/strategies/tequila.rb', line 36

def callback_phase
  response = fetch_attributes( request.params['key'] )

  return fail!(:invalid_response, TequilaFail.new('nil response from Tequila')) if response.nil?
  return fail!(:invalid_response, TequilaFail.new('Invalid reponse from Tequila: ' + response.code)) unless response.code == '200'

  # parse attributes
  self.raw_info = {}
  response.body.each_line { |line|
    item = line.split('=', 2)
    if item.length == 2
      raw_info[item[0]] = item[1].strip
    end
  }

  missing_info = @options[:request_info].values.reject { |k| raw_info.include?(k) }
  if !missing_info.empty?
    log :error, 'Missing attributes in Tequila server response: ' + missing_info.join(', ')
    return fail!(:invalid_info, TequilaFail.new('Invalid info from Tequila'))
  end

  super
end

#request_phaseObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/omniauth/strategies/tequila.rb', line 60

def request_phase
  response = get_request_key
  if response.nil? or response.code != '200'
    log :error, 'Received invalid response from Tequila server: ' + (response.nil? ? 'nil' : response.code)
    return fail!(:invalid_response, TequilaFail.new('Invalid response from Tequila server'))
  end

  request_key = response.body[/^key=(.*)$/, 1]
  if request_key.nil? or request_key.empty?
    log :error, 'Received invalid key from Tequila server: ' + (request_key.nil? ? 'nil' : request_key)
    return fail!(:invalid_key, TequilaFail.new('Invalid key from Tequila'))
  end

  # redirect to the Tequila server's login page
  [
    302,
    {
      'Location' => tequila_uri.to_s + '/requestauth?requestkey=' + request_key,
      'Content-Type' => 'text/plain'
    },
    ['You are being redirected to Tequila for sign-in.']
  ]
end