Skip to content

Commit 5b34fae

Browse files
committed
feat(session_store): can logout session after n seconds
1 parent 92634aa commit 5b34fae

3 files changed

Lines changed: 30 additions & 1 deletion

File tree

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
11
# Be sure to restart your server when you modify this file.
2-
opts = Rails.env.production? ? { same_site: :lax, secure: true } : {}
2+
opts = {}
3+
4+
if Rails.env.production?
5+
opts = { same_site: :lax, secure: true }
6+
expiry_time = TeSS::Config.login_expires_after
7+
opts[:expire_after] = expiry_time unless expiry_time.nil?
8+
end
9+
310
Rails.application.config.session_store :cookie_store, **opts

config/tess.example.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ default: &default
1313
announcement_message:
1414
prevent_robot_indexing: false
1515
require_cookie_consent: true
16+
login_expires_after: # in seconds, sets the login session duration, after this, users must login again, leave blank to disable.
1617
blocked_domains:
1718
- !ruby/regexp '/bad-domain\.example/'
1819
blocked_countries: # Block registration from the following ISO 3166-1 alpha-2 codes
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
require 'test_helper'
2+
3+
class SessionExpiryTest < ActionDispatch::IntegrationTest
4+
test 'sets expire_after in production' do
5+
Rails.stub(:env, ActiveSupport::StringInquirer.new('production')) do
6+
TeSS::Config.stub(:login_expires_after, 3600) do
7+
load Rails.root.join('config/initializers/session_store.rb')
8+
assert_equal 3600, Rails.application.config.session_options[:expire_after]
9+
end
10+
end
11+
end
12+
13+
test 'does not set expire_after outside production' do
14+
Rails.stub(:env, ActiveSupport::StringInquirer.new('test')) do
15+
TeSS::Config.stub(:login_expires_after, 3600) do
16+
load Rails.root.join('config/initializers/session_store.rb')
17+
assert_nil Rails.application.config.session_options[:expire_after]
18+
end
19+
end
20+
end
21+
end

0 commit comments

Comments
 (0)