Sha256: dd9e9315539301da5f0df34229a03dca5988ab7cb2d43a75d8bc38a0246d9725

Contents?: true

Size: 866 Bytes

Versions: 1

Compression:

Stored size: 866 Bytes

Contents

class SwitchUserController < ApplicationController

  unless Rails.version =~ /^3/
    unloadable
  end

  before_filter :developer_modes_only

  def set_current_user
    handle_request(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?
    SwitchUser.controller_guard.call(provider.current_user, request)
  end

  def handle_request(params)
    if params[:scope_identifier].blank?
      provider.logout_all
    else
      params[:scope_identifier] =~ /^([^_]+)_(.*)$/
      scope, identifier = $1, $2

      user = SwitchUser::UserLoader.new(scope, identifier).load
      provider.login_exclusive(user, :scope => scope)
    end
  end

  def provider
    SwitchUser.provider_class.new(self)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
switch_user-0.9.0 app/controllers/switch_user_controller.rb