module Authlogic::ActsAsAuthentic::SessionMaintenance::Methods

Public Class Methods

included(klass) click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 63
def self.included(klass)
  klass.class_eval do
    before_save :get_session_information, :if => :update_sessions?
    before_save :maintain_sessions, :if => :update_sessions?
  end
end

Public Instance Methods

save_without_session_maintenance(*args) click to toggle source

Save the record and skip session maintenance all together.

# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 71
def save_without_session_maintenance(*args)
  self.skip_session_maintenance = true
  result = save(*args)
  self.skip_session_maintenance = false
  result
end

Private Instance Methods

create_session() click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 109
def create_session
  # We only want to automatically login into the first session, since this is the main session. The other sessions are sessions
  # that need to be created after logging into the main session.
  session_id = session_ids.first
  session_class.create(*[self, self, session_id].compact)

  return true
end
get_session_information() click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 91
def get_session_information
  # Need to determine if we are completely logged out, or logged in as another user
  @_sessions = []
  
  session_ids.each do |session_id|
    session = session_class.find(session_id, self)
    @_sessions << session if session && session.record
  end
end
maintain_sessions() click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 101
def maintain_sessions
  if @_sessions.empty?
    create_session
  else
    update_sessions
  end
end
session_class() click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 133
def session_class
  self.class.session_class
end
session_ids() click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 129
def session_ids
  self.class.session_ids
end
skip_session_maintenance() click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 83
def skip_session_maintenance
  @skip_session_maintenance ||= false
end
skip_session_maintenance=(value) click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 79
def skip_session_maintenance=(value)
  @skip_session_maintenance = value
end
update_sessions() click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 118
def update_sessions
  # We found sessions above, let's update them with the new info
  @_sessions.each do |stale_session|
    next if stale_session.record != self
    stale_session.unauthorized_record = self
    stale_session.save
  end

  return true
end
update_sessions?() click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 87
def update_sessions?
  !skip_session_maintenance && session_class && session_class.activated? && self.class.maintain_sessions == true && !session_ids.blank? && persistence_token_changed?
end