X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/682ccc18df1911dbf737da87fc48d40705c72f40..4de07696d51d5b053fa6af2c0a5aa4d0b89d60b7:/lib/session_persistence/session_persistence.rb diff --git a/lib/session_persistence/session_persistence.rb b/lib/session_persistence/session_persistence.rb new file mode 100644 index 000000000..7bb51bc46 --- /dev/null +++ b/lib/session_persistence/session_persistence.rb @@ -0,0 +1,28 @@ +module SessionPersistence + private + + # Override this method if you don't want to use session[:_remember_for]. + def session_persistence_key + :_remember_for + end + + # Persist the session. + # + # session_expires_after 1.hour + # session_expires_after 2.weeks + def session_expires_after(seconds) + session[session_persistence_key] = seconds + end + + # Expire the session. + def session_expires_automatically + session.delete(session_persistence_key) + end + alias_method :expire_session, :session_expires_automatically + + def _persist_session + if session[session_persistence_key] + env["rack.session.options"][:expire_after] = session[session_persistence_key] + end + end +end