diff --git a/Gemfile b/Gemfile index efbf03e..1f0ea7c 100644 --- a/Gemfile +++ b/Gemfile @@ -2,12 +2,8 @@ source 'https://rubygems.org' gem 'haml-rails' -gem 'spree_auth_devise', - github: 'spree/spree_auth_devise', - branch: '2-2-stable' +gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: '2-2-stable' -gem 'spree_store_credits', - github: 'spree/spree_store_credits', - branch: '2-2-stable' +gem 'spree_store_credits', github: 'spree/spree_store_credits', branch: '2-2-stable' gemspec diff --git a/app/controllers/spree/base_controller_decorator.rb b/app/controllers/spree/base_controller_decorator.rb index 0b7d777..7051d89 100644 --- a/app/controllers/spree/base_controller_decorator.rb +++ b/app/controllers/spree/base_controller_decorator.rb @@ -4,6 +4,6 @@ private def remember_affiliate - cookies.permanent[:ref_id] = params[:ref_id] if params[:ref_id] + cookies.permanent[:ref_token] = params[:ref_token] if params[:ref_token] end end diff --git a/app/helpers/spree/base_helper_decorator.rb b/app/helpers/spree/base_helper_decorator.rb index 84130ec..bccc7c2 100644 --- a/app/helpers/spree/base_helper_decorator.rb +++ b/app/helpers/spree/base_helper_decorator.rb @@ -1,6 +1,6 @@ Spree::BaseHelper.class_eval do def referral_url(referrer) - root_url(ref_id: referrer.ref_id) + root_url(ref_token: referrer.ref_token) end def link_to_referral_url(referrer, options = {}) diff --git a/app/models/spree/affiliate.rb b/app/models/spree/affiliate.rb index 35837f2..71386d4 100644 --- a/app/models/spree/affiliate.rb +++ b/app/models/spree/affiliate.rb @@ -14,4 +14,5 @@ def name def ref_id partner.try(:ref_id) || '' end + end diff --git a/app/models/spree/user_decorator.rb b/app/models/spree/user_decorator.rb index ebb880f..bc6a96d 100644 --- a/app/models/spree/user_decorator.rb +++ b/app/models/spree/user_decorator.rb @@ -5,19 +5,24 @@ foreign_key: 'partner_id' has_many :referred_users, class_name: 'Spree::User', - through: :affiliates + through: :affiliates, + source: :user has_one :affiliate_partner, class_name:'Spree::Affiliate', foreign_key: 'user_id' def referred_by - affiliate_partner.partner + affiliate_partner.try :partner end def ref_id self.id.to_s.reverse end + def ref_token + Base64.encode64 email + end + def self.find_by_ref_id(ref_id) Spree::User.find(ref_id.to_s.reverse) end diff --git a/lib/affiliate_credits.rb b/lib/affiliate_credits.rb index e9da992..38ec14a 100644 --- a/lib/affiliate_credits.rb +++ b/lib/affiliate_credits.rb @@ -34,8 +34,9 @@ def log_event(affiliate, user, credit, event) def check_affiliate @user.reload if @user.present? and not @user.new_record? - return if cookies[:ref_id].blank? || @user.nil? || @user.invalid? - sender = Spree.user_class.find_by_ref_id(cookies[:ref_id]) + return if cookies[:ref_token].blank? || @user.nil? || @user.invalid? + email = Base64.decode64 cookies[:ref_token] + sender = Spree.user_class.find_by(email: email) if sender sender.affiliates.create(:user_id => @user.id) @@ -44,6 +45,6 @@ def check_affiliate end #destroy the cookie, as the affiliate record has been created. - cookies[:ref_id] = nil + cookies[:ref_token] = nil end end diff --git a/lib/spree_affiliate/engine.rb b/lib/spree_affiliate/engine.rb index f134e3c..b4aff69 100644 --- a/lib/spree_affiliate/engine.rb +++ b/lib/spree_affiliate/engine.rb @@ -1,6 +1,7 @@ module SpreeAffiliate class Engine < Rails::Engine require 'spree/core' + require 'haml' isolate_namespace Spree engine_name 'spree_affiliate' diff --git a/spree_affiliate.gemspec b/spree_affiliate.gemspec index f700776..f87aac6 100644 --- a/spree_affiliate.gemspec +++ b/spree_affiliate.gemspec @@ -19,7 +19,8 @@ Gem::Specification.new do |s| s.require_path = 'lib' s.requirements << 'none' - s.add_dependency 'spree_core', '~> 2.3.0.beta' + s.add_dependency 'spree_core', '~> 2.2.1' + s.add_dependency 'haml-rails' s.add_development_dependency 'capybara', '~> 2.1' s.add_development_dependency 'coffee-rails'