Make the "remember me" option work as intended

This commit is contained in:
Tom Hughes 2024-11-05 18:42:20 +00:00
parent 6042632806
commit a42b654606
3 changed files with 20 additions and 2 deletions

View file

@ -20,7 +20,7 @@ class SessionsController < ApplicationController
end
def create
session[:remember_me] ||= params[:remember_me]
session[:remember_me] = params[:remember_me] == "yes"
referer = safe_referer(params[:referer]) if params[:referer]

View file

@ -40,7 +40,7 @@
<%= f.password_field :password, :autocomplete => "on", :tabindex => 2, :value => "", :skip_label => true %>
<%= f.form_group do %>
<%= f.check_box :remember_me, { :label => t(".remember"), :tabindex => 3, :checked => (params[:remember_me] == "yes") }, "yes" %>
<%= f.check_box :remember_me, { :label => t(".remember"), :tabindex => 3, :checked => (params[:remember_me] == "true") }, "yes" %>
<% end %>
<div class="mb-3">

View file

@ -54,6 +54,24 @@ class SessionsControllerTest < ActionDispatch::IntegrationTest
assert_redirected_to root_path
end
def test_login_remembered
user = create(:user)
post login_path, :params => { :username => user.display_name, :password => "test", :remember_me => "yes" }
assert_redirected_to root_path
assert_equal 28 * 86400, session[:_remember_for]
end
def test_login_not_remembered
user = create(:user)
post login_path, :params => { :username => user.display_name, :password => "test", :remember_me => "0" }
assert_redirected_to root_path
assert_nil session[:_remember_for]
end
def test_logout_without_referer
post logout_path
assert_redirected_to root_path