Class: CASClient::LoginResponse

Inherits:
Object
  • Object
show all
Defined in:
lib/casclient/responses.rb

Overview

Represents a response from the CAS server to a login request (i.e. after submitting a username/password).

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(http_response = nil) ⇒ LoginResponse

Returns a new instance of LoginResponse.



144
145
146
# File 'lib/casclient/responses.rb', line 144

def initialize(http_response = nil)
  parse_http_response(http_response) if http_response
end

Instance Attribute Details

#failure_messageObject (readonly)

Returns the value of attribute failure_message.



142
143
144
# File 'lib/casclient/responses.rb', line 142

def failure_message
  @failure_message
end

#service_redirect_urlObject (readonly)

Returns the value of attribute service_redirect_url.



141
142
143
# File 'lib/casclient/responses.rb', line 141

def service_redirect_url
  @service_redirect_url
end

#tgtObject (readonly)

Returns the value of attribute tgt.



141
142
143
# File 'lib/casclient/responses.rb', line 141

def tgt
  @tgt
end

#ticketObject (readonly)

Returns the value of attribute ticket.



141
142
143
# File 'lib/casclient/responses.rb', line 141

def ticket
  @ticket
end

Instance Method Details

#is_failure?Boolean

Returns:

  • (Boolean)


184
185
186
# File 'lib/casclient/responses.rb', line 184

def is_failure?
  @failure == true
end

#is_success?Boolean

Returns:

  • (Boolean)


180
181
182
# File 'lib/casclient/responses.rb', line 180

def is_success?
  !@failure && !ticket.blank?
end

#parse_http_response(http_response) ⇒ Object



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# File 'lib/casclient/responses.rb', line 148

def parse_http_response(http_response)
  header = http_response.to_hash
  
  # FIXME: this regexp might be incorrect...
  if header['set-cookie'] && 
      header['set-cookie'].first && 
      header['set-cookie'].first =~ /tgt=([^&]+);/
    @tgt = $~[1]
  end

  location = header['location'].first if header['location'] && header['location'].first
  if location =~ /ticket=([^&]+)/
    @ticket = $~[1]
  end
  
  if (http_response.kind_of?(Net::HTTPSuccess) || http_response.kind_of?(Net::HTTPFound)) && @ticket.present?
    log.info("Login was successful for ticket: #{@ticket.inspect}.")
  else
    @failure = true
    # Try to extract the error message -- this only works with RubyCAS-Server.
    # For other servers we just return the entire response body (i.e. the whole error page).
    body = http_response.body
    if body =~ /<div class="messagebox mistake">(.*?)<\/div>/m
      @failure_message = $~[1].strip
    else
      @failure_message = body
    end
  end
  
  @service_redirect_url = location
end