From fbf486dae68988e33d8c77b2a4e1ebdcc51620dc Mon Sep 17 00:00:00 2001 From: Sarah Mei <sarahmei@gmail.com> Date: Sat, 14 May 2011 14:58:52 -0700 Subject: [PATCH] Users can log in on their phones again. Something in devise broke for the :mobile format. More investigation needed; we're having this same issue on log out and incorrect password on mobile (though those pages are at least still usable). --- app/controllers/sessions_controller.rb | 12 +++++++++++- spec/controllers/sessions_controller_spec.rb | 19 +++++++++++++++---- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 47ac32530d..32a864238f 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -5,6 +5,17 @@ class SessionsController < Devise::SessionsController after_filter :enqueue_update, :only => :create + + def create + resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new") + set_flash_message(:notice, :signed_in) if is_navigational_format? + sign_in(resource_name, resource) + redirect_loc = redirect_location(resource_name, resource) + respond_with resource, :location => redirect_loc do |format| + format.mobile { redirect_to root_path } + end + end + protected def enqueue_update if current_user @@ -13,5 +24,4 @@ class SessionsController < Devise::SessionsController } end end - end diff --git a/spec/controllers/sessions_controller_spec.rb b/spec/controllers/sessions_controller_spec.rb index 2b84674822..e46ac04575 100644 --- a/spec/controllers/sessions_controller_spec.rb +++ b/spec/controllers/sessions_controller_spec.rb @@ -17,17 +17,28 @@ describe SessionsController do before do @request.env["devise.mapping"] = Devise.mappings[:user] - @user = alice + @user = alice @user.password = "evankorth" @user.password_confirmation = "evankorth" - @service = Services::Facebook.new(:access_token => "yeah") - @user.services << @service @user.save end describe "#create" do + it "redirects to / for a normal user" do + post :create, {"user" => {"remember_me" => "0", "username" => @user.username, "password" => "evankorth"}} + response.should redirect_to root_path + end + it "redirects to / for a mobile user" do + @request.env['HTTP_USER_AGENT'] = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7' + post :create, {"user" => {"remember_me" => "0", "username" => @user.username, "password" => "evankorth"}} + response.should redirect_to root_path + end it 'queues up an update job' do - Resque.should_receive(:enqueue).with(Job::UpdateServiceUsers, @service.id) + service = Services::Facebook.new(:access_token => "yeah") + @user.services << service + @user.save + + Resque.should_receive(:enqueue).with(Job::UpdateServiceUsers, service.id) post :create, {"user"=>{"remember_me"=>"0", "username"=> @user.username, "password"=>"evankorth"}} end -- GitLab