lib/challah/simple_cookie_store.rb in challah-1.6.1 vs lib/challah/simple_cookie_store.rb in challah-2.0.0.beta1

- old
+ new

@@ -2,20 +2,21 @@ # 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+ class SimpleCookieStore + def initialize(session) @session = session end def destroy clear end def inspect - "#<SimpleCookieStore:0x#{object_id.to_s(16)} valid=#{existing?}>" + "#<SimpleCookieStore:0x#{ object_id.to_s(16) } valid=#{ existing? }>" end def read existing? ? cookie_values : nil end @@ -27,109 +28,110 @@ write_cookies! end private - def clear - cookies.delete(session_cookie_name, domain: domain) - cookies.delete(validation_cookie_name, domain: domain) - end + def clear + cookies.delete(session_cookie_name, domain: domain) + cookies.delete(validation_cookie_name, domain: domain) + end - def cookie_values - session_cookie && session_cookie.to_s.split(joiner) - end + def cookie_values + session_cookie && session_cookie.to_s.split(joiner) + end - def cookies - request.cookie_jar - end + def cookies + request.cookie_jar + end - def default_cookie_prefix - Challah.options[:cookie_prefix] - end + def default_cookie_prefix + Challah.options[:cookie_prefix] + end - def domain - request.session_options[:domain] - end + def domain + request.session_options[:domain] + end - # Do the cookies exist, and are they valid? - def existing? - exists = false + # Do the cookies exist, and are they valid? + def existing? + exists = false - if session_cookie and validation_cookie - session_tmp = session_cookie.to_s - validation_tmp = validation_cookie.to_s + if session_cookie && validation_cookie + session_tmp = session_cookie.to_s + validation_tmp = validation_cookie.to_s - if validation_tmp == validation_cookie_value(session_tmp) - exists = true + if validation_tmp == validation_cookie_value(session_tmp) + exists = true + end end + + exists end - exists - end + def expiration + @expiration ||= 1.month.from_now + end - def expiration - @expiration ||= 1.month.from_now - end + def joiner + "@" + end - def joiner - '@' - end + def prefix + @prefix ||= [ default_cookie_prefix, user_model_id ].compact.join("-") + end - def prefix - @prefix ||= [ default_cookie_prefix, user_model_id ].compact.join('-') - end + def request + raise "No Request Provided" unless @session && @session.request + @session.request + end - def request - raise "No Request Provided" unless @session and @session.request - @session.request - end + def session_cookie + cookies[session_cookie_name] + end - def session_cookie - cookies[session_cookie_name] - end + def session_cookie_name + "#{ prefix }-s" + end - def session_cookie_name - "#{prefix}-s" - end + def session_cookie_value + "#@token#{ joiner }#@user_id" + end - def session_cookie_value - "#@token#{joiner}#@user_id" - end + 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 - 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) + def validation_cookie + cookies[validation_cookie_name] end - end - def validation_cookie - cookies[validation_cookie_name] - end + def validation_cookie_name + "#{ prefix }-v" + end - def validation_cookie_name - "#{prefix}-v" - end + def validation_cookie_value(value = nil) + value = session_cookie_value unless value + Encrypter.md5(value) + end - def validation_cookie_value(value = nil) - value = session_cookie_value unless value - Encrypter.md5(value) - end + def write_cookies! + cookies[session_cookie_name] = { + value: session_cookie_value, + expires: expiration, + secure: false, + httponly: true, + domain: domain + } - def write_cookies! - cookies[session_cookie_name] = { - value: session_cookie_value, - expires: expiration, - secure: false, - httponly: true, - domain: domain - } + cookies[validation_cookie_name] = { + value: validation_cookie_value, + expires: expiration, + secure: false, + httponly: true, + domain: domain + } + end - cookies[validation_cookie_name] = { - value: validation_cookie_value, - expires: expiration, - secure: false, - httponly: true, - domain: domain - } - end end end