Add a "remember me" box to the login screen that causes you to stay
authorTom Hughes <tom@compton.nu>
Thu, 25 Feb 2010 16:50:56 +0000 (16:50 +0000)
committerTom Hughes <tom@compton.nu>
Thu, 25 Feb 2010 16:50:56 +0000 (16:50 +0000)
logged in across browser restarts - you will only be logged out if you
don't visit for a month. Closes #1030.

app/controllers/user_controller.rb
app/views/user/login.html.erb

index 3a2bc7f0d333afc45626413517575cae7b4cc5dd..02cabb01073e215a51c2fb557bb77545bd3aea49 100644 (file)
@@ -157,6 +157,7 @@ class UserController < ApplicationController
       user = User.authenticate(:username => email_or_display_name, :password => pass)
       if user
         session[:user] = user.id
+        session_expires_after 1.month if params[:remember_me]
       elsif User.authenticate(:username => email_or_display_name, :password => pass, :inactive => true)
         flash.now[:error] = t 'user.login.account not active'
       else
@@ -192,6 +193,7 @@ class UserController < ApplicationController
       session[:token] = nil
     end
     session[:user] = nil
+    session_expires_automatically
     if params[:referer]
       redirect_to params[:referer]
     else
index 19e1f21e143333ce75e30920efbe98dffe95092a..9ff10007905d26348d9397f2c0ae3af6c9689a3f 100644 (file)
@@ -7,6 +7,7 @@
 <table id="loginForm">
   <tr><td class="fieldName"><%= t 'user.login.email or username' %></td><td><%= text_field('user', 'email',{:size => 28, :maxlength => 255, :tabindex => 1}) %></td></tr>
   <tr><td class="fieldName"><%= t 'user.login.password' %></td><td><%= password_field('user', 'password',{:size => 28, :maxlength => 255, :tabindex => 2}) %> <span class="minorNote">(<%= link_to t('user.login.lost password link'), :controller => 'user', :action => 'lost_password' %>)</span></td></tr>
+  <tr><td class="fieldName"><label for="remember_me">Remember me:</label></td><td><%= check_box_tag "remember_me", "yes", false, :tabindex => 3 %></td></tr> 
   <tr><td colspan="2">&nbsp;<!--vertical spacer--></td></tr>
   <tr><td></td><td align="right"><%= submit_tag t('user.login.login_button'), :tabindex => 3 %></td></tr>
 </table>