authorization.rb 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. class Authorization < ActiveRecord::Base
  2. belongs_to :user
  3. validates_presence_of :user_id, :uid, :provider
  4. validates_uniqueness_of :uid, :scope => :provider
  5. def self.find_from_hash(hash)
  6. auth = Authorization.where( :provider => hash['provider'], :uid => hash['uid'] )
  7. if auth && auth.first then
  8. # raise auth.first.to_yaml
  9. # raise hash.to_yaml
  10. # update auth tokens
  11. auth.first.update_attributes(
  12. :token => hash['credentials']['token'],
  13. :secret => hash['credentials']['secret']
  14. )
  15. # update image if needed
  16. if hash['info']['image']
  17. user = User.where( :id => auth.first.user_id ).first
  18. user.update_attributes(
  19. :image => hash['info']['image']
  20. )
  21. # reset cache
  22. user.cache_delete
  23. end
  24. end
  25. return auth.first
  26. end
  27. def self.create_from_hash(hash, user = nil)
  28. if user then
  29. user.update_attributes(
  30. :username => hash['username'],
  31. :image => hash['info']['image']
  32. )
  33. else
  34. user = User.create_from_hash!(hash)
  35. end
  36. Authorization.create(
  37. :user => user,
  38. :uid => hash['uid'],
  39. :username => hash['username'],
  40. :provider => hash['provider'],
  41. :token => hash['credentials']['token'],
  42. :secret => hash['credentials']['secret']
  43. )
  44. # reset cache
  45. user.cache_delete
  46. end
  47. end