trabajo-afectivo/app/models/authorization.rb

70 lines
1.8 KiB
Ruby
Raw Normal View History

2014-02-03 19:23:00 +00:00
# Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
class Authorization < ApplicationModel
2012-07-29 19:32:37 +00:00
belongs_to :user
after_create :delete_user_cache
after_update :delete_user_cache
after_destroy :delete_user_cache
2012-04-16 08:04:49 +00:00
validates_presence_of :user_id, :uid, :provider
validates_uniqueness_of :uid, :scope => :provider
2012-04-10 14:06:46 +00:00
def self.find_from_hash(hash)
auth = Authorization.where( :provider => hash['provider'], :uid => hash['uid'] ).first
if auth
2012-04-10 14:06:46 +00:00
# update auth tokens
auth.update_attributes(
2012-04-10 14:06:46 +00:00
:token => hash['credentials']['token'],
:secret => hash['credentials']['secret']
)
# update username of auth entry if empty
if !auth.username && hash['info']['nickname']
auth.update_attributes(
:username => hash['info']['nickname'],
)
end
2012-04-10 14:06:46 +00:00
# update image if needed
if hash['info']['image']
user = User.find( auth.user_id )
2012-04-10 14:06:46 +00:00
user.update_attributes(
2013-11-19 11:59:13 +00:00
:image_source => hash['info']['image']
2012-04-10 14:06:46 +00:00
)
end
end
return auth
2012-04-10 14:06:46 +00:00
end
2012-04-10 14:06:46 +00:00
def self.create_from_hash(hash, user = nil)
if user then
user.update_attributes(
# :username => hash['username'],
2013-11-19 11:59:13 +00:00
:image_source => hash['info']['image']
2012-04-10 14:06:46 +00:00
)
# fillup empty attributes
# TODO
2012-04-10 14:06:46 +00:00
else
user = User.create_from_hash!(hash)
2012-04-10 14:06:46 +00:00
end
auth = Authorization.create(
2012-04-10 14:06:46 +00:00
:user => user,
:uid => hash['uid'],
:username => hash['info']['nickname'] || hash['username'],
2012-04-10 14:06:46 +00:00
:provider => hash['provider'],
:token => hash['credentials']['token'],
:secret => hash['credentials']['secret']
)
return auth
2012-04-16 08:04:49 +00:00
end
private
def delete_user_cache
self.user.cache_delete
end
end