Sha256: 6e9261b49bc37311a3341ef724725dea6ca315b8161f2cf35de9d6d46d2cee7c

Contents?: true

Size: 1.57 KB

Versions: 2

Compression:

Stored size: 1.57 KB

Contents

class SwitchUserController < ApplicationController

  before_filter :developer_modes_only

  def set_current_user
    send("#{SwitchUser.provider}_handle", params)
    redirect_to(SwitchUser.redirect_path.call(request, params))
  end

  private
    def developer_modes_only
      render :text => "Permission Denied", :status => 403 unless available?
    end

    def available?
      user = nil
      if params[:scope_id].present?
        scope, id = params[:scope_id].split('_')
        SwitchUser.available_users.keys.each do |s|
          if scope == s.to_s
            user = scope.classify.constantize.find(id)
            break
          end
        end
      end
      SwitchUser.controller_guard.call(user, request)
    end

    def devise_handle(params)
      if params[:scope_id].blank?
        SwitchUser.available_users.keys.each do |s|
          warden.logout(s)
        end
      else
        scope, id = params[:scope_id].split('_')
        SwitchUser.available_users.keys.each do |s|
          if scope == s.to_s
            user = scope.classify.constantize.find(id)
            warden.set_user(user, :scope => scope)
          else
            warden.logout(s)
          end
        end
      end
    end

    def authlogic_handle(params)
      if params[:scope_id].blank?
        current_user_session.destroy
      else
        scope, id = params[:scope_id].split('_')
        SwitchUser.available_users.keys.each do |s|
          if scope == s.to_s
            user = scope.classify.constantize.find(id)
            UserSession.create(user)
          end
        end
      end
    end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
switch_user-0.4.1 app/controllers/switch_user_controller.rb
switch_user-0.4.0 app/controllers/switch_user_controller.rb