Sha256: b6ff54d20607b38b285bad95157cbde6feb815215e7cf5f209fb19810eeaca77

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

class Devise::MasqueradesController < DeviseController
  prepend_before_filter :authenticate_scope!

  before_filter :save_masquerade_owner_session, :only => :show
  after_filter :cleanup_masquerade_owner_session, :only => :back

  def show
    self.resource = resource_class.to_adapter.find_first(:id => params[:id])

    redirect_to(new_user_session_path) and return unless self.resource

    self.resource.masquerade!

    redirect_to("#{after_masquerade_path_for(self.resource)}?#{after_masquerade_param_for(resource)}")
  end

  def back
    owner_user = resource_class.to_adapter.find_first(:id => session[session_key])

    sign_in owner_user

    redirect_to '/'
  end

  private

  def authenticate_scope!
    send(:"authenticate_#{resource_name}!", :force => true)
  end

  def after_masquerade_path_for(resource)
    "/"
  end

  def after_masquerade_param_for(resource)
    "#{Devise.masquerade_param}=#{resource.masquerade_key}"
  end

  def save_masquerade_owner_session
    session[session_key] = send("current_#{resource_name}").id
  end

  def cleanup_masquerade_owner_session
    session.delete(session_key)
  end

  def session_key
    "devise_masquerade_#{resource_name}".to_sym
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
devise_masquerade-0.1.0 app/controllers/devise/masquerades_controller.rb
devise_masquerade-0.0.9 app/controllers/devise/masquerades_controller.rb
devise_masquerade-0.0.8 app/controllers/devise/masquerades_controller.rb