Guest

Untitled

By: a guest on Jan 28th, 2012  |  syntax: None  |  size: 2.09 KB  |  hits: 26  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. ## user_sessions_controller.rb
  2.  
  3. class UserSessionsController < ApplicationController
  4.   before_filter :require_no_user, :only => [:new, :create]
  5.   before_filter :require_user, :only => :destroy
  6.  
  7.   def new
  8.     @user_session = UserSession.new
  9.   end
  10.  
  11.   def create
  12.     @user_session = UserSession.new(params[:user_session])
  13.     if @user_session.save
  14.       flash[:notice] = "Login successful"
  15.       ## FIXME
  16.       redirect_to @current_user
  17.     else
  18.       render :action => :new
  19.     end
  20.   end
  21.  
  22.   def destroy
  23.     current_user_session.destroy
  24.     flash[:notice] = "Logout successful"
  25.     redirect_to root_path
  26.   end
  27. end
  28.  
  29. ## application_controller.rb
  30. # Filters added to this controller apply to all controllers in the application.
  31. # Likewise, all the methods added will be available for all controllers.
  32.  
  33. class ApplicationController < ActionController::Base
  34.   helper :all # include all helpers, all the time
  35.   helper_method :current_user_session, :current_user
  36.   filter_parameter_logging :password, :password_confirmation
  37.   protect_from_forgery # See ActionController::RequestForgeryProtection for details
  38.  
  39.   private
  40.     def current_user_session
  41.       return @current_user_session if defined?(@current_user_session)
  42.       @current_user_session = UserSession.find
  43.     end
  44.    
  45.     def current_user
  46.       return @current_user if defined?(@current_user)
  47.       @current_user = current_user_session && current_user_session.record
  48.     end
  49.    
  50.     def require_user
  51.       unless current_user
  52.         store_location
  53.         flash[:notice] = "You must be logged in to access that page"
  54.         redirect_to login_path
  55.       end
  56.     end
  57.    
  58.     def require_no_user
  59.       if current_user
  60.         store_location
  61.         flash[:notice] = "You must be logged out to access that page"
  62.         redirect_to current_user
  63.         return false
  64.       end
  65.     end
  66.    
  67.     def store_location
  68.       session[:return_to] = request.request_uri
  69.     end
  70.    
  71.     def redirect_back_or_default(default)
  72.       redirect_to(session[:return_to] || default)
  73.       session[:return_to] = nil
  74.     end
  75. end