72 lines
2.3 KiB
Ruby
72 lines
2.3 KiB
Ruby
module JamRuby
|
|
|
|
# some times someone comes to signup as a new user, but there is context to preserve.
|
|
# the AnyUser cookie is one way that we can track the user from pre-signup to post-signup
|
|
# anyway, once the signup is done, we check to see if there is a SignupHint, and if so,
|
|
# we use it to figure out what to do with the user after they signup
|
|
class SignupHint < ActiveRecord::Base
|
|
|
|
belongs_to :jam_track, class_name: 'JamRuby::JamTrack'
|
|
|
|
belongs_to :user, class_name: 'JamRuby::User'
|
|
|
|
validates :redirect_location, length: {maximum: 1000}
|
|
validates :want_jamblaster, inclusion: {in: [nil, true, false]}
|
|
|
|
def self.create_redirect(user, options = {})
|
|
hint = SignupHint.new
|
|
hint.user = user
|
|
hint.redirect_location = options[:redirect_location] if options.has_key?(:redirect_location)
|
|
hint.want_jamblaster = false
|
|
hint.expires_at = 2.days.from_now
|
|
hint.save
|
|
hint
|
|
end
|
|
|
|
def self.refresh_by_anoymous_user(anonymous_user, options = {})
|
|
|
|
hint = SignupHint.find_by_anonymous_user_id(anonymous_user.id)
|
|
|
|
unless hint
|
|
hint = SignupHint.new
|
|
end
|
|
|
|
hint.anonymous_user_id = anonymous_user.id
|
|
hint.redirect_location = options[:redirect_location] if options.has_key?(:redirect_location)
|
|
hint.want_jamblaster = options[:want_jamblaster] if options.has_key?(:want_jamblaster)
|
|
#hint.jam_track = JamTrack.find(options[:jam_track]) if options.has_key?(:jam_track)
|
|
hint.expires_at = 15.minutes.from_now
|
|
hint.save
|
|
hint
|
|
end
|
|
|
|
def self.delete_old
|
|
SignupHint.where("created_at < :week", {:week => 1.week.ago}).delete_all
|
|
end
|
|
|
|
def self.most_recent_redirect(user, default, queryParams=nil)
|
|
puts "jquery params"
|
|
hint = SignupHint.where(user_id: user.id).order('created_at desc').first
|
|
|
|
if hint
|
|
redirect = hint.redirect_location
|
|
puts "redirect #{redirect}"
|
|
uri = URI.parse(redirect)
|
|
bits = uri.query ? URI.decode_www_form(uri.query) : []
|
|
if queryParams
|
|
queryParams.each do |k, v|
|
|
bits << [k, v]
|
|
end
|
|
end
|
|
|
|
puts "bits #{bits}"
|
|
uri.query = URI.encode_www_form(bits)
|
|
puts "oh yeah #{uri.to_s}"
|
|
return uri.to_s
|
|
else
|
|
default
|
|
end
|
|
end
|
|
end
|
|
end
|