trabajo-afectivo/app/models/authorization.rb

96 lines
2.3 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
belongs_to :user
after_create :delete_user_cache
after_update :delete_user_cache
after_destroy :delete_user_cache
validates :user_id, presence: true
validates :uid, presence: true, uniqueness: { scope: :provider }
validates :provider, presence: true
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(
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(
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(
user: user,
uid: hash['uid'],
username: hash['info']['nickname'] || hash['username'],
provider: hash['provider'],
token: hash['credentials']['token'],
secret: hash['credentials']['secret']
2012-04-10 14:06:46 +00:00
)
2012-04-16 08:04:49 +00:00
end
private
def delete_user_cache
self.user.cache_delete
end
2014-12-01 07:32:35 +00:00
end