Advertisement
Guest User

Untitled

a guest
Apr 13th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. class User < ActiveRecord::Base
  2.  
  3. has_many :usertracks, :dependent => :destroy
  4. mount_uploader :image, ArtistPhotoUploader
  5.  
  6. TEMP_EMAIL_PREFIX = 'change@me'
  7. TEMP_EMAIL_REGEX = /Achange@me/
  8.  
  9. # Include default devise modules. Others available are:
  10. # :lockable, :timeoutable
  11. devise :database_authenticatable, :registerable, :confirmable,
  12. :recoverable, :rememberable, :trackable, :validatable, :omniauthable
  13.  
  14. validates_format_of :email, :without => TEMP_EMAIL_REGEX, on: :update
  15.  
  16. validates_presence_of :image
  17. validates_integrity_of :image
  18. validates_processing_of :image
  19.  
  20. def self.find_for_oauth(auth, signed_in_resource = nil)
  21.  
  22. # Get the identity and user if they exist
  23. identity = Identity.find_for_oauth(auth)
  24.  
  25. user = signed_in_resource ? signed_in_resource : identity.user
  26.  
  27. # Create the user if needed
  28. if user.nil?
  29.  
  30. email_is_verified = auth.info.email && (auth.extra.raw_info.verified || auth.info.verified || auth.extra.raw_info.primary_email_confirmed)
  31. email = auth.info.email if email_is_verified
  32.  
  33. firstname = auth.info.name.split(' ')[0].capitalize
  34. surname = auth.info.name.split(' ')[1].capitalize
  35.  
  36. if email
  37. user = User.where("email = ?", email).first
  38. else
  39. user = User.where("firstname = ? AND surname = ?",firstname, surname)
  40. end
  41.  
  42. # Create the user if it's a new registration
  43. if user.blank?
  44.  
  45. user = User.new(
  46. firstname: firstname,
  47. surname: surname,
  48. #username: auth.info.nickname || auth.uid,
  49. email: email ? email : "#{TEMP_EMAIL_PREFIX}-#{auth.uid}-#{auth.provider}.com",
  50. password: Devise.friendly_token[0,20],
  51. remote_image_url: auth.info.image.gsub('http://','https://')
  52. )
  53. user.oauth_token = auth.credentials.token
  54. user.oauth_secret = auth.credentials.secret
  55.  
  56. user.skip_confirmation!
  57. user.save!
  58. else
  59. # if user found, update credentials - token/secret to overwrite previous provider
  60. p "this is the user #{user.inspect}"
  61. user.oauth_token = auth.credentials.token
  62. user.oauth_secret = auth.credentials.secret
  63. user.update!
  64. end
  65. end
  66.  
  67. # Associate the identity with the user if needed
  68. if identity.user != user
  69. identity.user = user
  70. identity.save!
  71. end
  72. user
  73. end
  74.  
  75. def email_verified?
  76. self.email && self.email !~ TEMP_EMAIL_REGEX
  77. end
  78.  
  79. end
  80.  
  81. # if user found, update credentials - token/secret to overwrite previous provider
  82. p "this is the user #{user.inspect}"
  83. user.oauth_token = auth.credentials.token
  84. user.oauth_secret = auth.credentials.secret
  85. user.update!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement