Sha256: bd5da8b859a68432bedc8bccd8b991c5d82c00f225287b10d15c5cee3940e341

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

class Devise::CasSessionsController < Devise::SessionsController  
  unloadable
  
  def new
    unless returning_from_cas?
      redirect_to(cas_login_url)
    end
  end
  
  def service
    warden.authenticate!(:scope => resource_name)
    redirect_to after_sign_in_path_for(resource_name)
  end
  
  def unregistered
  end
  
  def destroy
    # if :cas_create_user is false a CAS session might be open but not signed_in
    # in such case we destroy the session here
    if signed_in?(resource_name)
      sign_out(resource_name)
    else
      reset_session
    end
    destination = request.protocol
    destination << request.host
    destination << ":#{request.port.to_s}" unless request.port == 80
    destination << after_sign_out_path_for(resource_name)
    redirect_to(::Devise.cas_client.logout_url(destination))
  end
  
  private  
  def returning_from_cas?
    params[:ticket] || request.referer =~ /^#{::Devise.cas_client.cas_base_url}/
  end
  
  def cas_login_url
    ::Devise.cas_client.add_service_to_login_url(::Devise.cas_service_url(request.url, devise_mapping))
  end
  helper_method :cas_login_url
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
devise_cas_authenticatable-1.0.0.alpha11 app/controllers/devise/cas_sessions_controller.rb
devise_cas_authenticatable-1.0.0.alpha10 app/controllers/devise/cas_sessions_controller.rb
devise_cas_authenticatable-1.0.0.alpha8 app/controllers/devise/cas_sessions_controller.rb
devise_cas_authenticatable-1.0.0.alpha7 app/controllers/devise/cas_sessions_controller.rb