|
|
|
class User < ActiveRecord::Base
|
|
|
|
authenticates_with_sorcery! do |config|
|
|
|
|
config.authentications_class = Authentication
|
|
|
|
end
|
|
|
|
|
|
|
|
validates :email, uniqueness: true
|
|
|
|
|
|
|
|
mount_uploader :avatar, AvatarUploader
|
|
|
|
|
|
|
|
has_many :user_organization_relationships
|
|
|
|
has_many :organizations, through: :user_organization_relationships
|
|
|
|
has_many :conferences, through: :conference_administrators
|
|
|
|
has_many :authentications, :dependent => :destroy
|
|
|
|
accepts_nested_attributes_for :authentications
|
|
|
|
|
|
|
|
before_update do |user|
|
|
|
|
user.locale ||= I18n.locale
|
|
|
|
user.email.downcase!
|
|
|
|
end
|
|
|
|
|
|
|
|
before_save do |user|
|
|
|
|
user.locale ||= I18n.locale
|
|
|
|
user.email.downcase!
|
|
|
|
end
|
|
|
|
|
|
|
|
def can_translate?(to_locale = nil, from_locale = nil)
|
|
|
|
is_translator unless to_locale.present?
|
|
|
|
|
|
|
|
from_locale = I18n.locale unless from_locale.present?
|
|
|
|
return languages.present? &&
|
|
|
|
to_locale.to_s != from_locale.to_s &&
|
|
|
|
languages.include?(to_locale.to_s) &&
|
|
|
|
languages.include?(from_locale.to_s)
|
|
|
|
end
|
|
|
|
|
|
|
|
def name
|
|
|
|
firstname || username || email
|
|
|
|
end
|
|
|
|
|
|
|
|
def named_email
|
|
|
|
name = firstname || username
|
|
|
|
return email unless name
|
|
|
|
return "#{name} <#{email}>"
|
|
|
|
end
|
|
|
|
|
|
|
|
def administrator?
|
|
|
|
role == 'administrator'
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.AVAILABLE_LANGUAGES
|
|
|
|
[:en, :es, :fr, :ar]
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.get(email)
|
|
|
|
user = find_user(email)
|
|
|
|
|
|
|
|
unless user
|
|
|
|
user = create(email: email, locale: I18n.locale)
|
|
|
|
end
|
|
|
|
|
|
|
|
return user
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.find_user(email)
|
|
|
|
User.where('lower(email) = ?', email.downcase).first
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|