module RackCAS::MongoidStore

Public Class Methods

destroy_session_by_cas_ticket(cas_ticket) click to toggle source
# File lib/rack-cas/session_store/mongoid.rb, line 18
def self.destroy_session_by_cas_ticket(cas_ticket)
  affected = Session.where(cas_ticket: cas_ticket).delete
  affected == 1
end
prune(after = nil) click to toggle source
# File lib/rack-cas/session_store/mongoid.rb, line 23
def self.prune(after = nil)
  after ||= Time.now - 2592000 # 30 days ago
  Session.where(:updated_at.lte => after).delete
end

Private Instance Methods

delete_session(env, sid, options) click to toggle source

Rack 2.0 method

# File lib/rack-cas/session_store/mongoid.rb, line 58
def delete_session(env, sid, options)
  Session.where(_id: sid).delete

  options[:drop] ? nil : generate_sid
end
destroy_session(env, sid, options) click to toggle source

Rack 1.* method

# File lib/rack-cas/session_store/mongoid.rb, line 73
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/mongoid.rb, line 31
def find_session(env, sid)
  if sid.nil?
    sid = generate_sid
    data = nil
  else
    unless session = Session.where(_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
get_session(env, sid)

Rack 1.* method

Alias for: find_session
pack(data) click to toggle source
# File lib/rack-cas/session_store/mongoid.rb, line 77
def pack(data)
  if defined? Moped::BSON
    Moped::BSON::Binary.new(:generic, Marshal.dump(data))
  else
    BSON::Binary.new(Marshal.dump(data))
  end
end
set_session(env, sid, session_data, options) click to toggle source

Rack 1.* method

# File lib/rack-cas/session_store/mongoid.rb, line 68
def set_session(env, sid, session_data, options) # rack 1.x compatibilty
  write_session(Rack::Request.new(env), sid, session_data, options)
end
unpack(packed) click to toggle source
# File lib/rack-cas/session_store/mongoid.rb, line 85
def unpack(packed)
  return nil unless packed

  if defined? Moped::BSON
    Marshal.load(StringIO.new(packed.to_s))
  else
    Marshal.load(packed.data)
  end
end
write_session(env, sid, session_data, options) click to toggle source

Rack 2.0 method

# File lib/rack-cas/session_store/mongoid.rb, line 48
def write_session(env, sid, session_data, options)
  cas_ticket = (session_data['cas']['ticket'] unless session_data['cas'].nil?)

  session = Session.find_or_initialize_by(_id: sid)
  success = session.update_attributes(data: pack(session_data), cas_ticket: cas_ticket)

  success ? session.id : false
end