Changeset 860

Show
Ignore:
Timestamp:
05/10/08 23:36:01 (3 months ago)
Author:
seancribbs
Message:

Login System tweaks

  • Remember request URI when user logs in
  • Don't show admin/login to authenticated user
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/radiant/app/controllers/admin/welcome_controller.rb

    r523 r860  
    1010      login = params[:user][:login] 
    1111      password = params[:user][:password] 
    12       self.current_user = User.authenticate(login, password) 
    13       if current_user 
    14         redirect_to welcome_url 
    15       else 
    16         announce_invalid_user 
    17       end 
     12      announce_invalid_user unless self.current_user = User.authenticate(login, password) 
     13    end 
     14    if current_user 
     15      redirect_to (session[:return_to] || welcome_url) 
     16      session[:return_to] = nil 
    1817    end 
    1918  end 
  • trunk/radiant/lib/login_system.rb

    r754 r860  
    3939          redirect_to permissions[:denied_url] || { :action => :index } 
    4040        else 
     41          session[:return_to] = request.request_uri 
    4142          redirect_to login_url 
    4243        end 
  • trunk/radiant/spec/controllers/admin/welcome_controller_spec.rb

    r785 r860  
    3535    response.should redirect_to(login_url) 
    3636  end 
     37 
     38  describe "with a logged-in user" do 
     39    before do 
     40      login_as :admin 
     41    end 
     42 
     43    it "should not show /login again" do 
     44      get :login 
     45      response.should redirect_to(welcome_url) 
     46    end 
     47 
     48    describe "and a stored location" do 
     49      before do 
     50        session[:return_to] = '/stored/path' 
     51        post :login, :user => {:login => "admin", :password => "password"} 
     52      end 
     53 
     54      it "should redirect" do 
     55        response.should redirect_to('/stored/path') 
     56      end 
     57 
     58      it "should clear session[:return_to]" do 
     59        session[:return_to].should be_nil 
     60      end 
     61    end 
     62  end 
    3763end 
  • trunk/radiant/spec/lib/login_system_spec.rb

    r754 r860  
    6969    get :index 
    7070    response.should redirect_to(login_url) 
     71  end 
     72   
     73  it "should store location" do 
     74    get 'protected_action' 
     75    session[:return_to].should match(/login_required\/protected_action/) 
    7176  end 
    7277end