Sha256: b29f95427590cfbd85bb972881361ba071ba8837066235f923844fe405a81053

Contents?: true

Size: 1.51 KB

Versions: 1

Compression:

Stored size: 1.51 KB

Contents

# frozen_string_literal: true

require 'devise'
require 'devise/acquirable/version'

Devise.add_module :acquirable, model: 'devise/acquirable/model', controller: :registrations

module Devise
  module Acquirable
    module Controller
      extend ActiveSupport::Concern

      included do
        before_action :set_tracking_cookies
      end

      def set_tracking_cookies
        cookies[:referring_url] =
          { value: request.env['HTTP_REFERER'], expires: 90.days.from_now } if cookies[:referring_url].blank?

        cookies[:landing_url] =
          { value: request.url, expires: 90.days.from_now } if cookies[:landing_url].blank?
      end
    end

    module RegistrationsController
      extend ActiveSupport::Concern

      included do
        alias_method :devise_build_resource, :build_resource
        def build_resource(hash = nil)
          custom_build_resource(hash)
        end
      end

      def custom_build_resource(hash = nil)
        devise_build_resource(hash)

        set_marketing_attributes if devise_mapping.acquirable?

        resource
      end

      def set_marketing_attributes
        resource.referring_url = cookies[:referring_url]
        resource.landing_url = cookies[:landing_url]
      end
    end

    class Engine < ::Rails::Engine
      ActiveSupport.on_load(:action_controller) do
        include Devise::Acquirable::Controller
      end

      config.to_prepare do
        Devise::RegistrationsController.include Devise::Acquirable::RegistrationsController
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
devise-acquirable-0.1.1 lib/devise/acquirable.rb