trabajo-afectivo/app/models/authorization.rb

94 lines
2.4 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(
2014-12-01 07:32:35 +00:00
:token => hash['credentials']['token'],
:secret => hash['credentials']['secret']
2012-04-10 14:06:46 +00:00
)
# update username of auth entry if empty
if !auth.username && hash['info']['nickname']
auth.update_attributes(
2014-12-01 07:32:35 +00:00
: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 )
2014-12-01 07:32:35 +00:00
# save/update avatar
avatar = Avatar.add(
:object => 'User',
:o_id => user.id,
:url => hash['info']['image'],
:source => hash['provider'],
:deletable => true,
:updated_by_id => user.id,
:created_by_id => user.id,
2012-04-10 14:06:46 +00:00
)
2014-12-01 07:32:35 +00:00
# update user link
if avatar
user.update_column( :image, avatar.store_hash )
end
2012-04-10 14:06:46 +00:00
end
end
2014-12-01 07:32:35 +00:00
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)
2014-12-01 07:32:35 +00:00
if user
# save/update avatar
avatar = Avatar.add(
:object => 'User',
:o_id => user.id,
:url => hash['info']['image'],
:source => hash['provider'],
:deletable => true,
:updated_by_id => user.id,
:created_by_id => user.id,
2012-04-10 14:06:46 +00:00
)
2014-12-01 07:32:35 +00:00
# update user link
if avatar
user.update_column( :image, avatar.store_hash )
end
# 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
2014-12-01 07:32:35 +00:00
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']
)
2012-04-16 08:04:49 +00:00
end
private
2014-12-01 07:32:35 +00:00
def delete_user_cache
self.user.cache_delete
end
end