Renew visit cookie for events
Andrew
committed Feb 27, 2018
commit dc33ac3459970cb325ed73074b637163b4726b8a
Showing 3
changed files with
16 additions
and 11 deletions
app/controllers/ahoy/base_controller.rb
+9
-2
| @@ | @@ -5,11 +5,11 @@ module Ahoy |
| skip_before_action(*filters, raise: false) | |
| skip_after_action(*filters, raise: false) | |
| skip_around_action(*filters, raise: false) | |
| - | before_action :verify_request_size |
| else | |
| skip_action_callback *filters | |
| - | before_action :verify_request_size |
| end | |
| + | before_action :verify_request_size |
| + | before_action :renew_cookies |
| if respond_to?(:protect_from_forgery) | |
| protect_from_forgery with: :null_session, if: -> { Ahoy.protect_from_forgery } | |
| @@ | @@ -21,6 +21,13 @@ module Ahoy |
| @ahoy ||= Ahoy::Tracker.new(controller: self, api: true) | |
| end | |
| + | # set proper ttl if cookie generated from JavaScript |
| + | # approach is not perfecr, as user must reload the page |
| + | # for new cookie settings to take effect |
| + | def renew_cookies |
| + | set_ahoy_cookies if params[:js] && !Ahoy.api_only |
| + | end |
| + | |
| def verify_request_size | |
| if request.content_length > Ahoy.max_content_length | |
| logger.info "[ahoy] Payload too large" | |
app/controllers/ahoy/visits_controller.rb
+0
-3
| @@ | @@ -3,9 +3,6 @@ module Ahoy |
| def create | |
| ahoy.track_visit | |
| - | # set proper ttl if cookie generated from JavaScript |
| - | set_ahoy_cookies if params[:js] && !Ahoy.api_only |
| - | |
| render json: { | |
| visit_token: ahoy.visit_token, | |
| visitor_token: ahoy.visitor_token, | |
vendor/assets/javascripts/ahoy.js
+7
-6
| @@ | @@ -357,10 +357,6 @@ function createVisit() { |
| log("Active visit"); | |
| setReady(); | |
| } else { | |
| - | if (track) { |
| - | destroyCookie("ahoy_track"); |
| - | } |
| - | |
| if (!visitId) { | |
| visitId = generateId(); | |
| setCookie("ahoy_visit", visitId, visitTtl); | |
| @@ | @@ -392,7 +388,11 @@ function createVisit() { |
| log(data); | |
| - | sendRequest(visitsUrl(), data, setReady); |
| + | sendRequest(visitsUrl(), data, function () { |
| + | // wait until successful to destroy |
| + | destroyCookie("ahoy_track"); |
| + | setReady(); |
| + | }); |
| } else { | |
| log("Cookies disabled"); | |
| setReady(); | |
| @@ | @@ -431,7 +431,8 @@ ahoy.track = function (name, properties) { |
| name: name, | |
| properties: properties || {}, | |
| time: new Date().getTime() / 1000.0, | |
| - | id: generateId() |
| + | id: generateId(), |
| + | js: true |
| }; | |
| ready(function () { | |