Module: ActiveResource::ActsAsAuthenticatable::ClassMethods

Defined in:
lib/active_resource/acts_as_authenticatable.rb

Instance Method Summary collapse

Instance Method Details

#authenticate(username, password, remember = false) ⇒ Object

Authenticates the username and password



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/active_resource/acts_as_authenticatable.rb', line 9

def authenticate(username, password, remember = false)
  case(self.format)
  when ActiveResource::Formats::XmlFormat
    user = self.new Hash.from_xml(self.post(:signin,:username => username, :password => password, :remember => remember).body).values.first
  when ActiveResource::Formats::JsonFormat
    user = self.new ActiveSupport::JSON.decode(self.post(:signin,:username => username, :password => password, :remember => remember).body)
  else
    user = self.new Hash.from_xml(self.post(:signin,:username => username, :password => password, :remember => remember).body).values.first
  end
  
  unless user.nil?
    if self.sync && !self.sync_to.nil?
      last_update = user.attributes.delete "updated_at"
      local_user = self.sync_to.find_or_initialize_by_username user.username, user.attributes
      
      unless local_user.new_record?
        last_update_datetime = (last_update.kind_of?(String)) ? (DateTime.parse(last_update)) : (last_update)
        
        if local_user.updated_at < last_update_datetime
          
          local_user.update_attributes user.attributes            
        end
      else
        local_user.save
      end
    end
  end
  return user
end