* VRFS-3216 - add virtual page views for JamTrack funnels, add test mode for fraud check VRFS-3260
This commit is contained in:
parent
f5595a03d5
commit
781a9838b7
|
|
@ -6,21 +6,21 @@ module JamRuby
|
|||
|
||||
@@log = Logging.logger[JamTrackRight]
|
||||
|
||||
attr_accessible :user, :jam_track, :user_id, :jam_track_id, :download_count
|
||||
attr_accessible :user, :jam_track, :user_id, :jam_track_id, :download_count
|
||||
attr_accessible :user_id, :jam_track_id, as: :admin
|
||||
attr_accessible :url_48, :md5_48, :length_48, :url_44, :md5_44, :length_44
|
||||
belongs_to :user, class_name: "JamRuby::User" # the owner, or purchaser of the jam_track
|
||||
belongs_to :user, class_name: "JamRuby::User" # the owner, or purchaser of the jam_track
|
||||
belongs_to :jam_track, class_name: "JamRuby::JamTrack"
|
||||
|
||||
validates :user, presence:true
|
||||
validates :jam_track, presence:true
|
||||
validates :is_test_purchase, inclusion: {in: [true, false]}
|
||||
validates :user, presence: true
|
||||
validates :jam_track, presence: true
|
||||
validates :is_test_purchase, inclusion: {in: [true, false]}
|
||||
|
||||
validate :verify_download_count
|
||||
after_save :after_save
|
||||
|
||||
validates_uniqueness_of :user_id, scope: :jam_track_id
|
||||
|
||||
validates_uniqueness_of :user_id, scope: :jam_track_id
|
||||
|
||||
# Uploads the JKZ:
|
||||
mount_uploader :url_48, JamTrackRightUploader
|
||||
mount_uploader :url_44, JamTrackRightUploader
|
||||
|
|
@ -45,7 +45,7 @@ module JamRuby
|
|||
def filename(bitrate)
|
||||
"#{jam_track.name}-#{bitrate == :url_48 ? '48' : '44'}.jkz"
|
||||
end
|
||||
|
||||
|
||||
def verify_download_count
|
||||
if (self.download_count < 0 || self.download_count > MAX_JAM_TRACK_DOWNLOADS) && !@current_user.admin
|
||||
errors.add(:download_count, "must be less than or equal to #{MAX_JAM_TRACK_DOWNLOADS}")
|
||||
|
|
@ -105,8 +105,8 @@ module JamRuby
|
|||
end
|
||||
|
||||
def delete_s3_files
|
||||
remove_url_48!
|
||||
remove_url_44!
|
||||
remove_url_48!
|
||||
remove_url_44!
|
||||
end
|
||||
|
||||
|
||||
|
|
@ -244,7 +244,7 @@ module JamRuby
|
|||
# if this is a free JamTrack, we need to check for fraud or accidental misuse
|
||||
|
||||
# first of all, does this user have any other JamTracks aside from this one that have already been redeemed it and are marked free?
|
||||
other_redeemed_freebie = JamTrackRight.where(redeemed:true).where(redeemed_and_fingerprinted: true).where('id != ?', id).where(user_id: current_user.id).first
|
||||
other_redeemed_freebie = JamTrackRight.where(redeemed: true).where(redeemed_and_fingerprinted: true).where('id != ?', id).where(user_id: current_user.id).first
|
||||
|
||||
if other_redeemed_freebie
|
||||
return "already redeemed another"
|
||||
|
|
@ -259,17 +259,23 @@ module JamRuby
|
|||
|
||||
# try to record the other fingerprint
|
||||
MachineFingerprint.create(running_fingerprint, current_user, MachineFingerprint::TAKEN_ON_FRAUD_CONFLICT, MachineFingerprint::PRINT_TYPE_ACTIVE, remote_ip, self)
|
||||
return "other user has 'all' fingerprint"
|
||||
if APP_CONFIG.error_on_fraud
|
||||
return "other user has 'all' fingerprint"
|
||||
end
|
||||
end
|
||||
|
||||
match = MachineFingerprint.find_by_fingerprint(running_fingerprint)
|
||||
if all_fingerprint != running_fingerprint
|
||||
match = MachineFingerprint.find_by_fingerprint(running_fingerprint)
|
||||
|
||||
if match && match.user != current_user
|
||||
AdminMailer.alerts(subject: "'Running' fingerprint collision by #{current_user.name}",
|
||||
body: "MachineFingerprint #{match.inspect}\n\nCurrent User: #{current_user.admin_url}").deliver
|
||||
# try to record the other fingerprint
|
||||
MachineFingerprint.create(all_fingerprint, current_user, MachineFingerprint::TAKEN_ON_FRAUD_CONFLICT, MachineFingerprint::PRINT_TYPE_ALL, remote_ip, self)
|
||||
return "other user has 'running' fingerprint"
|
||||
if match && match.user != current_user
|
||||
AdminMailer.alerts(subject: "'Running' fingerprint collision by #{current_user.name}",
|
||||
body: "MachineFingerprint #{match.inspect}\n\nCurrent User: #{current_user.admin_url}").deliver
|
||||
# try to record the other fingerprint
|
||||
MachineFingerprint.create(all_fingerprint, current_user, MachineFingerprint::TAKEN_ON_FRAUD_CONFLICT, MachineFingerprint::PRINT_TYPE_ALL, remote_ip, self)
|
||||
if APP_CONFIG.error_on_fraud
|
||||
return "other user has 'running' fingerprint"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# we made it past all checks; let's slap on the redeemed_fingerprint
|
||||
|
|
|
|||
|
|
@ -194,6 +194,10 @@ def app_config
|
|||
'blah'
|
||||
end
|
||||
|
||||
def error_on_fraud
|
||||
true
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def audiomixer_workspace_path
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@
|
|||
//= require web/signup_helper
|
||||
//= require web/signin_helper
|
||||
//= require web/signin
|
||||
//= require web/tracking
|
||||
//= require_directory .
|
||||
//= require_directory ./dialog
|
||||
//= require_directory ./wizard
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ context.JK.JamTrackScreen=class JamTrackScreen
|
|||
this.refresh()
|
||||
|
||||
afterShow:(data) =>
|
||||
context.JK.Tracking.jamtrackBrowseTrack(@app)
|
||||
|
||||
beforeHide: () =>
|
||||
this.clearResults();
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
}
|
||||
|
||||
function afterShow(data) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -40,6 +41,7 @@
|
|||
$contentHolder.removeClass('not-signed-in').addClass('signed-in')
|
||||
}
|
||||
else {
|
||||
context.JK.Tracking.redeemSignupTrack(app)
|
||||
$jamtrackName.text('')
|
||||
$contentHolder.addClass('hidden')
|
||||
$contentHolder.removeClass('signed-in').addClass('not-signed-in')
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@
|
|||
$genericHeader = $page.find('h1.generic')
|
||||
$individualizedHeader = $page.find('h1.individualized')
|
||||
|
||||
context.JK.Tracking.adTrack(app)
|
||||
fetchJamTrack();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@
|
|||
$jamTracksButton = $page.find('.browse-jamtracks')
|
||||
$ctaJamTracksButton = $page.find('.cta-free-jamtrack');
|
||||
|
||||
context.JK.Tracking.adTrack(app)
|
||||
fetchJamTrack();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,56 @@
|
|||
|
||||
|
||||
$ = jQuery
|
||||
context = window
|
||||
context.JK ||= {};
|
||||
|
||||
class Tracking
|
||||
constructor: () ->
|
||||
@logger = context.JK.logger
|
||||
@rest = new context.JK.Rest();
|
||||
|
||||
adTrack: (app) =>
|
||||
utmSource = $.QueryString['utm_source']
|
||||
if utmSource == 'facebook-ads' || utmSource == 'google-ads' || utmSource == 'twitter-ads' || utmSource == 'affiliate' || utmSource == 'pr'
|
||||
if !context.jamClient.IsNativeClient()
|
||||
@logger.debug("new user recorded")
|
||||
context.JK.GA.virtualPageView('/landing/jamtracks/new-user/')
|
||||
|
||||
app.user().done( (user) =>
|
||||
# relative to 1 day ago (24 * 60 * 60 * 1000)
|
||||
if new Date(user.created_at).getTime() < new Date().getTime() - 86400000
|
||||
@logger.debug("existing user recorded")
|
||||
context.JK.GA.virtualPageView('/landing/jamtracks/existing-user/');
|
||||
|
||||
)
|
||||
|
||||
jamtrackBrowseTrack: (app) =>
|
||||
app.user().done( (user) =>
|
||||
if context.jamClient.IsNativeClient()
|
||||
@logger.debug("client user recorded")
|
||||
context.JK.GA.virtualPageView('/client#/jamtrackBrowse/user-in-app')
|
||||
else
|
||||
if new Date(user.created_at).getTime() < new Date().getTime() - 86400000
|
||||
@logger.debug("existing user recorded")
|
||||
context.JK.GA.virtualPageView('/client#/jamtrackBrowse/existing-user')
|
||||
else
|
||||
@logger.debug("existing new recorded")
|
||||
context.JK.GA.virtualPageView('/client#/jamtrackBrowse/new-user')
|
||||
)
|
||||
|
||||
redeemSignupTrack: (app) =>
|
||||
app.user().done( (user) =>
|
||||
if context.jamClient.IsNativeClient()
|
||||
@logger.debug("client user recorded")
|
||||
context.JK.GA.virtualPageView('/client#/redeemSignup/user-in-app')
|
||||
else
|
||||
if new Date(user.created_at).getTime() < new Date().getTime() - 86400000
|
||||
@logger.debug("existing existing recorded")
|
||||
context.JK.GA.virtualPageView('/client#/redeemSignup/existing-user')
|
||||
else
|
||||
@logger.debug("existing new recorded")
|
||||
context.JK.GA.virtualPageView('/client#/redeemSignup/new-user')
|
||||
)
|
||||
|
||||
context.JK.Tracking = new Tracking()
|
||||
|
||||
|
|
@ -62,6 +62,7 @@
|
|||
//= require web/session_info
|
||||
//= require web/recordings
|
||||
//= require web/home
|
||||
//= require web/tracking
|
||||
//= require web/individual_jamtrack
|
||||
//= require web/individual_jamtrack_band
|
||||
//= require fakeJamClient
|
||||
|
|
|
|||
|
|
@ -342,5 +342,6 @@ if defined?(Bundler)
|
|||
config.estimate_taxes = true
|
||||
config.ad_sense_enabled = false
|
||||
config.guard_against_fraud = false
|
||||
config.error_on_fraud = false
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue