Sha256: a2122b3e162a99115b69c2f8111a547d2060c2f87d5af40926f74965fd7cd7e7

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 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_from_auth(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.shopify_domain
    end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
disco_app-0.13.2 app/controllers/disco_app/user_sessions_controller.rb
disco_app-0.13.3 app/controllers/disco_app/user_sessions_controller.rb
disco_app-0.13.4 app/controllers/disco_app/user_sessions_controller.rb
disco_app-0.13.5 app/controllers/disco_app/user_sessions_controller.rb