Sha256: 5c2174a11604afe23a2bc1798365c6912d6e75702811c4f5f7575c5a05dd5001

Contents?: true

Size: 1.12 KB

Versions: 7

Compression:

Stored size: 1.12 KB

Contents

class DiscoApp::UserSessionsController < ApplicationController

  include DiscoApp::Concerns::AuthenticatedController

  def new
    authenticate if sanitized_shop_name.present?
  end

  def create
    authenticate
  end

  def callback
    if auth_hash
      login_user
      redirect_to return_address
    else
      redirect_to root_path
    end
  end

  def destroy
    session[:shopify_user] = nil
    redirect_to root_path
  end

  protected

    def auth_hash
      request.env['omniauth.auth']
    end

    def associated_user(auth_hash)
      auth_hash['extra']['associated_user']
    end

    def authenticate
      if sanitized_shop_name.present?
        fullpage_redirect_to "#{main_app.root_path}auth/shopify_user?shop=#{sanitized_shop_name}"
      else
        redirect_to return_address
      end
    end

    def login_user
      @user = DiscoApp::User.create_user(associated_user(auth_hash), @shop)
      session[:shopify_user] = @user.id
    end

    def return_address
      session.delete(:return_to) || main_app.root_url
    end

    def sanitized_shop_name
      @shop.present? ? @shop.shopify_domain : super
    end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
disco_app-0.17.0 app/controllers/disco_app/user_sessions_controller.rb
disco_app-0.18.0 app/controllers/disco_app/user_sessions_controller.rb
disco_app-0.18.2 app/controllers/disco_app/user_sessions_controller.rb
disco_app-0.18.3 app/controllers/disco_app/user_sessions_controller.rb
disco_app-0.18.6 app/controllers/disco_app/user_sessions_controller.rb
disco_app-0.18.4 app/controllers/disco_app/user_sessions_controller.rb
disco_app-0.18.1 app/controllers/disco_app/user_sessions_controller.rb