Sha256: 83a299c3cd9d78f8184ef3aed308eee3cf0ecf8b4d1c0b22ac58ba25ec447cad

Contents?: true

Size: 1.52 KB

Versions: 11

Compression:

Stored size: 1.52 KB

Contents

module BookendsHelper
  def glostick_user_name
    glostick_user['full_name']
  end

  def glostick_user_email
    glostick_user['email']
  end

  def signup_link(title, options = {})
    url = "https://signup.heroku.com"
    data = { trackable: { category: "Sign Up Links", action: "Clicked", label: "#{options[:referral] || options[:branded_signup]}" } }

    url += "/#{options[:branded_signup]}" if options[:branded_signup]

    if options[:campaign_id]
      url = url + "?c=" + options[:campaign_id]
    elsif options[:referral]
      url = url + "/" + options[:referral]
    end

    link_to title, url, class: options[:class], data: data
  end

  private
  def glostick_user
    @glostick_user ||= GlostickUserExtractor.new(cookies).user
  end

  class GlostickUserExtractor
    attr_reader :secret,
                :token

    def initialize(cookies)
      @secret = ENV['SESSION_COOKIE_SECRET_PRIMARY'] || ENV['SESSION_COOKIE_SECRET_SECONDARY']
      @token  = CGI::unescape(cookies[:heroku_user_session]) if cookies[:heroku_user_session]
    end

    def user
      session_info = decrypt_session_cookie
      if session_info && session_info['user']
        session_info['user']
      else
        {
          'email' => '',
          'full_name' => ''
        }
      end
    end

    private
    def decrypt_session_cookie
      return nil unless token && secret

      verifier = Fernet.verifier(secret, token)
      verifier.enforce_ttl = false

      return nil unless verifier.valid?

      JSON.parse(verifier.message)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
bookends-2.8.0 lib/bookends/templates/bookends_helper.rb
bookends-2.7.0 lib/bookends/templates/bookends_helper.rb
bookends-2.6.0 lib/bookends/templates/bookends_helper.rb
bookends-2.5.2 lib/bookends/templates/bookends_helper.rb
bookends-2.5.1 lib/bookends/templates/bookends_helper.rb
bookends-2.5.0 lib/bookends/templates/bookends_helper.rb
bookends-2.4.4 lib/bookends/templates/bookends_helper.rb
bookends-2.4.3 lib/bookends/templates/bookends_helper.rb
bookends-2.4.2 lib/bookends/templates/bookends_helper.rb
bookends-2.4.1 lib/bookends/templates/bookends_helper.rb
bookends-2.4.0 lib/bookends/templates/bookends_helper.rb