module RackCAS::ActiveRecordStore
Public Class Methods
destroy_session_by_cas_ticket(cas_ticket)
click to toggle source
# File lib/rack-cas/session_store/active_record.rb, line 6 def self.destroy_session_by_cas_ticket(cas_ticket) affected = Session.where(cas_ticket: cas_ticket).delete_all affected == 1 end
prune(after = nil)
click to toggle source
# File lib/rack-cas/session_store/active_record.rb, line 11 def self.prune(after = nil) after ||= Time.now - 2592000 # 30 days ago Session.where('updated_at < ?', after).delete_all end
Private Instance Methods
delete_session(req, sid, options)
click to toggle source
Rack
2.0 method
# File lib/rack-cas/session_store/active_record.rb, line 52 def delete_session(req, sid, options) Session.where(session_id: sid).delete_all options[:drop] ? nil : generate_sid end
destroy_session(env, sid, options)
click to toggle source
Rack
1.* method
# File lib/rack-cas/session_store/active_record.rb, line 67 def destroy_session(env, sid, options) # rack 1.x compatibilty delete_session(Rack::Request.new(env), sid, options) end
find_session(env, sid)
click to toggle source
Rack
2.0 method
# File lib/rack-cas/session_store/active_record.rb, line 19 def find_session(env, sid) if sid.nil? sid = generate_sid data = nil else unless session = Session.where(session_id: sid).first session = {} # force generation of new sid since there is no associated session sid = generate_sid end data = unpack(session['data']) end [sid, data] end
Also aliased as: get_session
pack(data)
click to toggle source
# File lib/rack-cas/session_store/active_record.rb, line 71 def pack(data) ::Base64.encode64(Marshal.dump(data)) if data end
set_session(env, sid, session_data, options)
click to toggle source
Rack
1.* method
# File lib/rack-cas/session_store/active_record.rb, line 62 def set_session(env, sid, session_data, options) # rack 1.x compatibilty write_session(Rack::Request.new(env), sid, session_data, options) end
unpack(data)
click to toggle source
# File lib/rack-cas/session_store/active_record.rb, line 75 def unpack(data) Marshal.load(::Base64.decode64(data)) if data end
write_session(req, sid, session_data, options)
click to toggle source
Rack
2.0 method
# File lib/rack-cas/session_store/active_record.rb, line 36 def write_session(req, sid, session_data, options) cas_ticket = (session_data['cas']['ticket'] unless session_data['cas'].nil?) session = if ActiveRecord.respond_to?(:version) && ActiveRecord.version >= Gem::Version.new('4.0.0') Session.where(session_id: sid).first_or_initialize else Session.find_or_initialize_by_session_id(sid) end session.data = pack(session_data) session.cas_ticket = cas_ticket success = session.save success ? session.session_id : false end