Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class User < ActiveRecord::Base
- has_many :usertracks, :dependent => :destroy
- mount_uploader :image, ArtistPhotoUploader
- TEMP_EMAIL_PREFIX = 'change@me'
- TEMP_EMAIL_REGEX = /Achange@me/
- # Include default devise modules. Others available are:
- # :lockable, :timeoutable
- devise :database_authenticatable, :registerable, :confirmable,
- :recoverable, :rememberable, :trackable, :validatable, :omniauthable
- validates_format_of :email, :without => TEMP_EMAIL_REGEX, on: :update
- validates_presence_of :image
- validates_integrity_of :image
- validates_processing_of :image
- def self.find_for_oauth(auth, signed_in_resource = nil)
- # Get the identity and user if they exist
- identity = Identity.find_for_oauth(auth)
- user = signed_in_resource ? signed_in_resource : identity.user
- # Create the user if needed
- if user.nil?
- email_is_verified = auth.info.email && (auth.extra.raw_info.verified || auth.info.verified || auth.extra.raw_info.primary_email_confirmed)
- email = auth.info.email if email_is_verified
- firstname = auth.info.name.split(' ')[0].capitalize
- surname = auth.info.name.split(' ')[1].capitalize
- if email
- user = User.where("email = ?", email).first
- else
- user = User.where("firstname = ? AND surname = ?",firstname, surname)
- end
- # Create the user if it's a new registration
- if user.blank?
- user = User.new(
- firstname: firstname,
- surname: surname,
- #username: auth.info.nickname || auth.uid,
- email: email ? email : "#{TEMP_EMAIL_PREFIX}-#{auth.uid}-#{auth.provider}.com",
- password: Devise.friendly_token[0,20],
- remote_image_url: auth.info.image.gsub('http://','https://')
- )
- user.oauth_token = auth.credentials.token
- user.oauth_secret = auth.credentials.secret
- user.skip_confirmation!
- user.save!
- else
- # if user found, update credentials - token/secret to overwrite previous provider
- p "this is the user #{user.inspect}"
- user.oauth_token = auth.credentials.token
- user.oauth_secret = auth.credentials.secret
- user.update!
- end
- end
- # Associate the identity with the user if needed
- if identity.user != user
- identity.user = user
- identity.save!
- end
- user
- end
- def email_verified?
- self.email && self.email !~ TEMP_EMAIL_REGEX
- end
- end
- # if user found, update credentials - token/secret to overwrite previous provider
- p "this is the user #{user.inspect}"
- user.oauth_token = auth.credentials.token
- user.oauth_secret = auth.credentials.secret
- user.update!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement