module Authlogic::ActsAsAuthentic::SessionMaintenance::Methods
This module, as one of the `acts_as_authentic_modules`, is only included into an ActiveRecord model if that model calls `acts_as_authentic`.
Public Class Methods
included(klass)
click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 88 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(**options)
click to toggle source
Save the record and skip session maintenance all together.
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 96 def save_without_session_maintenance(**options) self.skip_session_maintenance = true result = save(**options) 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 145 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) true end
get_session_information()
click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 126 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&.record end end
log_in_after_create?()
click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 174 def log_in_after_create? new_record? && self.class.log_in_after_create end
log_in_after_password_change?()
click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 178 def log_in_after_password_change? persisted? && will_save_change_to_persistence_token? && self.class.log_in_after_password_change end
maintain_session?()
click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 122 def maintain_session? log_in_after_create? || log_in_after_password_change? end
maintain_sessions()
click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 137 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 170 def session_class self.class.session_class end
session_ids()
click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 166 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 109 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 105 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 155 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 true end
update_sessions?()
click to toggle source
# File lib/authlogic/acts_as_authentic/session_maintenance.rb, line 113 def update_sessions? !skip_session_maintenance && session_class && session_class.activated? && maintain_session? && !session_ids.blank? && will_save_change_to_persistence_token? end