Нема описа

user.rb 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. class User < ActiveRecord::Base
  2. has_secure_password
  3. def self.for_oauth oauth
  4. oauth.get_data
  5. data = oauth.data
  6. user = find_by(oauth.provider => data[:id]) || find_or_create_by(email: data[:email]) do |u|
  7. u.password = SecureRandom.hex
  8. end
  9. user.update(
  10. display_name: oauth.get_names.join(' '),
  11. email: data[:email],
  12. oauth.provider => data[:id]
  13. )
  14. user
  15. end
  16. def self.from_auth(params, current_user)
  17. params = params.smash.with_indifferent_access
  18. authorization = Authorization.find_or_initialize_by(provider: params[:provider], uid: params[:uid])
  19. if authorization.persisted?
  20. if current_user
  21. if current_user.id == authorization.user.id
  22. user = current_user
  23. else
  24. return false
  25. end
  26. else
  27. user = authorization.user
  28. end
  29. else
  30. if current_user
  31. user = current_user
  32. elsif params[:email].present?
  33. user = User.find_or_initialize_by(email: params[:email])
  34. else
  35. user = User.new
  36. end
  37. end
  38. authorization.secret = params[:secret]
  39. authorization.token = params[:token]
  40. fallback_name = params[:name].split(" ") if params[:name]
  41. fallback_first_name = fallback_name.try(:first)
  42. fallback_last_name = fallback_name.try(:last)
  43. user.first_name ||= (params[:first_name] || fallback_first_name)
  44. user.last_name ||= (params[:last_name] || fallback_last_name)
  45. if user.image_url.blank?
  46. user.image = Image.new(name: user.full_name, remote_file_url: params[:image_url])
  47. end
  48. user.password = Devise.friendly_token[0,10] if user.encrypted_password.blank?
  49. if user.email.blank?
  50. user.save(validate: false)
  51. else
  52. user.save
  53. end
  54. authorization.user_id ||= user.id
  55. authorization.save
  56. user
  57. end
  58. def displayName= name
  59. self.display_name = name
  60. end
  61. end