class Challah::SimpleCookieStore
A base class for storing session data in a browser cookie.
To use a different storage method for persisting a session, just create a new class that responds to read
, save
and destroy
Public Class Methods
new(session)
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 7 def initialize(session) @session = session end
Public Instance Methods
destroy()
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 11 def destroy clear end
inspect()
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 15 def inspect "#<SimpleCookieStore:0x#{object_id.to_s(16)} valid=#{existing?}>" end
read()
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 19 def read existing? ? cookie_values : nil end
save(token, user_id)
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 23 def save(token, user_id) @token = token @user_id = user_id write_cookies! end
Private Instance Methods
clear()
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 32 def clear cookies.delete(session_cookie_name, domain: domain) cookies.delete(validation_cookie_name, domain: domain) end
domain()
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 49 def domain request.session_options[:domain] end
existing?()
click to toggle source
Do the cookies exist, and are they valid?
# File lib/challah/simple_cookie_store.rb, line 54 def existing? exists = false if session_cookie and validation_cookie session_tmp = session_cookie.to_s validation_tmp = validation_cookie.to_s if validation_tmp == validation_cookie_value(session_tmp) exists = true end end exists end
expiration()
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 69 def expiration @expiration ||= 1.month.from_now end
joiner()
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 73 def joiner '@' end
prefix()
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 77 def prefix @prefix ||= [ default_cookie_prefix, user_model_id ].compact.join('-') end
request()
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 81 def request raise "No Request Provided" unless @session and @session.request @session.request end
user_model_id()
click to toggle source
# File lib/challah/simple_cookie_store.rb, line 98 def user_model_id if @session && @session.user_model && @session.user_model.table_name != 'users' Encrypter.md5(@session.user_model.table_name).slice(0..5) end end