| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- class User < ActiveRecord::Base
- has_secure_password
- def self.for_oauth oauth
- oauth.get_data
- data = oauth.data
- user = find_by(oauth.provider => data[:id]) || find_or_create_by(email: data[:email]) do |u|
- u.password = SecureRandom.hex
- end
- user.update(
- display_name: oauth.get_names.join(' '),
- email: data[:email],
- oauth.provider => data[:id]
- )
- user
- end
- def self.from_auth(params, current_user)
- params = params.smash.with_indifferent_access
- authorization = Authorization.find_or_initialize_by(provider: params[:provider], uid: params[:uid])
- if authorization.persisted?
- if current_user
- if current_user.id == authorization.user.id
- user = current_user
- else
- return false
- end
- else
- user = authorization.user
- end
- else
- if current_user
- user = current_user
- elsif params[:email].present?
- user = User.find_or_initialize_by(email: params[:email])
- else
- user = User.new
- end
- end
- authorization.secret = params[:secret]
- authorization.token = params[:token]
- fallback_name = params[:name].split(" ") if params[:name]
- fallback_first_name = fallback_name.try(:first)
- fallback_last_name = fallback_name.try(:last)
- user.first_name ||= (params[:first_name] || fallback_first_name)
- user.last_name ||= (params[:last_name] || fallback_last_name)
- if user.image_url.blank?
- user.image = Image.new(name: user.full_name, remote_file_url: params[:image_url])
- end
- user.password = Devise.friendly_token[0,10] if user.encrypted_password.blank?
- if user.email.blank?
- user.save(validate: false)
- else
- user.save
- end
- authorization.user_id ||= user.id
- authorization.save
- user
- end
- def displayName= name
- self.display_name = name
- end
- end
|