binarylogic / authlogic

A simple model based ruby authentication solution.

This URL has Read+Write access

authlogic / lib / authlogic / session / session.rb
93a47874 » binarylogic 2008-11-09 Added Sha1 crypto provider ... 1 module Authlogic
2 module Session
b83abcac » binarylogic 2008-11-12 Added in authentication by ... 3 # = Session
4 #
5 # Handles all parts of authentication that deal with sessions. Such as persisting a session and saving / destroy a session.
93a47874 » binarylogic 2008-11-09 Added Sha1 crypto provider ... 6 module Session
7 def self.included(klass)
61ce15d1 » binarylogic 2009-02-11 Fixed issue when calling st... 8 klass.after_save :update_session, :if => :persisting?
febb7c17 » binarylogic 2009-02-11 Fixed logout on stale bug 9 klass.after_destroy :update_session, :if => :persisting?
61ce15d1 » binarylogic 2009-02-11 Fixed issue when calling st... 10 klass.after_find :update_session, :if => :persisting? # to continue persisting the session after an http_auth request
93a47874 » binarylogic 2008-11-09 Added Sha1 crypto provider ... 11 end
12
13 # Tries to validate the session from information in the session
14 def valid_session?
62b18a9d » binarylogic 2008-11-19 Skip validation for reset_p... 15 persistence_token, record_id = session_credentials
16 if !persistence_token.blank?
95440767 » binarylogic 2008-11-19 Store record id with sessio... 17 if record_id
b5dd3742 » binarylogic 2009-01-22 Use klass.primary_key inste... 18 record = search_for_record("find_by_#{klass.primary_key}", record_id)
95440767 » binarylogic 2008-11-19 Store record id with sessio... 19 self.unauthorized_record = record if record && record.send(persistence_token_field) == persistence_token
20 else
21 # For backwards compatibility, will eventually be removed, just need to let the sessions update theirself
22 record = search_for_record("find_by_#{persistence_token_field}", persistence_token)
23 if record
24 controller.session["#{session_key}_id"] = record.send(record.class.primary_key)
25 self.unauthorized_record = record
26 end
27 end
21d52f71 » binarylogic 2009-02-08 The class level find method... 28 valid?
69f2c2b6 » binarylogic 2009-01-08 Add a logout_on_timeout con... Comment 29 else
30 false
93a47874 » binarylogic 2008-11-09 Added Sha1 crypto provider ... 31 end
32 end
33
34 private
35 def session_credentials
95440767 » binarylogic 2008-11-19 Store record id with sessio... 36 [controller.session[session_key], controller.session["#{session_key}_id"]].compact
93a47874 » binarylogic 2008-11-09 Added Sha1 crypto provider ... 37 end
38
61ce15d1 » binarylogic 2009-02-11 Fixed issue when calling st... 39 def update_session
febb7c17 » binarylogic 2009-02-11 Fixed logout on stale bug 40 controller.session[session_key] = record && record.send(persistence_token_field)
41 controller.session["#{session_key}_id"] = record && record.send(record.class.primary_key)
93a47874 » binarylogic 2008-11-09 Added Sha1 crypto provider ... 42 end
43 end
44 end
45 end