Improve handling of login/logout some more to improve the chances of
authorTom Hughes <tom@compton.nu>
Mon, 11 Jun 2007 23:49:03 +0000 (23:49 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 11 Jun 2007 23:49:03 +0000 (23:49 +0000)
us ending up on the right page afterwards.

app/controllers/application.rb
app/controllers/trace_controller.rb
app/controllers/user_controller.rb
app/views/layouts/site.rhtml
app/views/trace/list.rhtml
app/views/user/login.rhtml
config/routes.rb

index 328148fe18daf712f478e7372bd1cf7caeaf5640..df94000be9e8307400587fc67d69ddb8915b52e1 100644 (file)
@@ -7,7 +7,7 @@ class ApplicationController < ActionController::Base
   end
 
   def require_user
   end
 
   def require_user
-    redirect_to :controller => 'user', :action => 'login', :next_controller => controller_name, :next_action => action_name unless @user
+    redirect_to :controller => 'user', :action => 'login', :referer => request.request_uri unless @user
   end
 
   def authorize(realm='Web Password', errormessage="Couldn't authenticate you") 
   end
 
   def authorize(realm='Web Password', errormessage="Couldn't authenticate you") 
index 262af0f8459a9ebb756371045311b52f2c609c68..262dd8d2f7585ab323feccfaba3f87e1dc938c77 100644 (file)
@@ -84,7 +84,7 @@ class TraceController < ApplicationController
     if @user
       list(@user, 'mine') unless @user.nil?
     else
     if @user
       list(@user, 'mine') unless @user.nil?
     else
-      redirect_to :controller => 'user', :action => 'login'
+      redirect_to :controller => 'user', :action => 'login', :referer => request.request_uri
     end
   end
 
     end
   end
 
index 9a1d89da6222213eef1c55108adcdd77b27e4807..83845af42547fcbd50a0a5182704cbcaaf9bf488 100644 (file)
@@ -99,8 +99,8 @@ class UserController < ApplicationController
         u.timeout = 1.day.from_now
         u.save
         session[:token] = u.token
         u.timeout = 1.day.from_now
         u.save
         session[:token] = u.token
-        if params[:next_controller] and params[:next_action]
-          redirect_to :controller => params[:next_controller], :action => params[:next_action]
+        if params[:referer]
+          redirect_to params[:referer]
         else
           redirect_to :controller => 'site', :action => 'index'
         end
         else
           redirect_to :controller => 'site', :action => 'index'
         end
@@ -121,8 +121,8 @@ class UserController < ApplicationController
       end
     end
     session[:token] = nil
       end
     end
     session[:token] = nil
-    if params[:next_controller] and params[:next_action]
-      redirect_to :controller => params[:next_controller], :action => params[:next_action]
+    if params[:referer]
+      redirect_to params[:referer]
     else
       redirect_to :controller => 'site', :action => 'index'
     end
     else
       redirect_to :controller => 'site', :action => 'index'
     end
index 9290ea892fbf71c2e7730d24e190793f8caef625..b34900f7b60ebbea19f8c83a484e31be6dde48a5 100644 (file)
@@ -26,9 +26,9 @@
     <span id="greeting">
       <% if @user %>
         Welcome, <%= link_to @user.display_name, {:controller => 'user', :action => 'view', :display_name => @user.display_name}, {:id => 'loginanchor'}%> |
     <span id="greeting">
       <% if @user %>
         Welcome, <%= link_to @user.display_name, {:controller => 'user', :action => 'view', :display_name => @user.display_name}, {:id => 'loginanchor'}%> |
-        <%= link_to 'logout', {:controller => 'user', :action => 'logout', :next_controller => @controller.controller_name, :next_action => @controller.action_name}, {:id => 'loginanchor'}%>
+        <%= link_to 'logout', {:controller => 'user', :action => 'logout', :referer => request.request_uri}, {:id => 'loginanchor'}%>
       <% else %>
       <% else %>
-        <%= link_to 'log in', {:controller => 'user', :action => 'login', :next_controller => @controller.controller_name, :next_action => @controller.action_name}, {:id => 'loginanchor'}%> |
+        <%= link_to 'log in', {:controller => 'user', :action => 'login', :referer => request.request_uri}, {:id => 'loginanchor'}%> |
         <%= link_to 'sign up', {:controller => 'user', :action => 'new'}, {:id => 'registeranchor'} %>
       <% end %>
     </span>
         <%= link_to 'sign up', {:controller => 'user', :action => 'new'}, {:id => 'registeranchor'} %>
       <% end %>
     </span>
index d93e32a5b6f359e186d5155263896d85c299388a..1bf36cc60abbcfe90c91f3dd6f91212b8c8f1cca 100644 (file)
@@ -5,11 +5,7 @@
  <br/><br/>
 <% end %>
 <span class="rsssmall"><a href="<%= url_for :controller => 'trace', :action => 'georss' %>"><img src="/images/RSS.gif" border="0"></a></span> | 
  <br/><br/>
 <% end %>
 <span class="rsssmall"><a href="<%= url_for :controller => 'trace', :action => 'georss' %>"><img src="/images/RSS.gif" border="0"></a></span> | 
-<% if @user %>
-  <%= link_to 'See just your traces, or upload a trace', {:controller => 'trace', :action => 'mine'} %>
-<% else %>
-  <%= link_to 'login', {:controller => 'user', :action => 'login', :next_controller => 'traces', :next_action => 'mine'} %> to upload a trace or see yours alone
-<% end %>
+<%= link_to 'See just your traces, or upload a trace', {:controller => 'trace', :action => 'mine'} %>
 <% if @tag %>
  | <%= link_to 'See all traces', {:controller => 'trace', :action => 'list'} %>
 <% end %>
 <% if @tag %>
  | <%= link_to 'See all traces', {:controller => 'trace', :action => 'list'} %>
 <% end %>
index bde0614d545f4713b316e62c1cba6cf462c00c1c..c8cc493889669bde0fc1bf23e52c5461b982b4df 100644 (file)
@@ -2,6 +2,7 @@
 Please login or <%= link_to 'create an account', :controller => 'user', :action => 'new' %>.<br>
 
 <% form_tag :action => 'login' do %>
 Please login or <%= link_to 'create an account', :controller => 'user', :action => 'new' %>.<br>
 
 <% form_tag :action => 'login' do %>
+<%= hidden_field_tag('referer', params[:referer]) %>
 <table>
   <tr><td>email address:</td><td><%= text_field('user', 'email',{:size => 50, :maxlength => 255}) %></td></tr>
   <tr><td>password:</td><td><%= password_field('user', 'password',{:size => 50, :maxlength => 255}) %></td></tr>
 <table>
   <tr><td>email address:</td><td><%= text_field('user', 'email',{:size => 50, :maxlength => 255}) %></td></tr>
   <tr><td>password:</td><td><%= password_field('user', 'password',{:size => 50, :maxlength => 255}) %></td></tr>
index e9de17dcb4243bf9343d3994a8ea20c253d84808..f2ccdad0eb812095616ec740267d49b80b6973fc 100644 (file)
@@ -45,8 +45,6 @@ ActionController::Routing::Routes.draw do |map|
   map.connect '/user/confirm', :controller => 'user', :action => 'confirm'
   map.connect '/user/go_public', :controller => 'user', :action => 'go_public'
   map.connect '/user/reset_password', :controller => 'user', :action => 'reset_password'
   map.connect '/user/confirm', :controller => 'user', :action => 'confirm'
   map.connect '/user/go_public', :controller => 'user', :action => 'go_public'
   map.connect '/user/reset_password', :controller => 'user', :action => 'reset_password'
-  map.connect '/user/login/:next_controller/:next_action', :controller => 'user', :action => 'login'
-  map.connect '/user/logout/:next_controller/:next_action', :controller => 'user', :action => 'logout'
   map.connect '/index.html', :controller => 'site', :action => 'index'
   map.connect '/edit.html', :controller => 'site', :action => 'edit'
   map.connect '/search.html', :controller => 'way_tag', :action => 'search'
   map.connect '/index.html', :controller => 'site', :action => 'index'
   map.connect '/edit.html', :controller => 'site', :action => 'edit'
   map.connect '/search.html', :controller => 'way_tag', :action => 'search'