Class: SimpleSession::Base
- Inherits:
-
Object
- Object
- SimpleSession::Base
- Defined in:
- lib/simple_session/base.rb
Direct Known Subclasses
Defined Under Namespace
Classes: OptionHash
Instance Attribute Summary collapse
-
#request ⇒ Object
readonly
Returns the value of attribute request.
-
#session ⇒ Object
readonly
Returns the value of attribute session.
Instance Method Summary collapse
- #call(env) ⇒ Object
- #get_secret_errors(options) ⇒ Object
-
#initialize(app, options = {}) ⇒ Base
constructor
A new instance of Base.
- #new_session_hash ⇒ Object
- #req_options ⇒ Object
- #req_session ⇒ Object
Constructor Details
#initialize(app, options = {}) ⇒ Base
11 12 13 14 15 16 17 |
# File 'lib/simple_session/base.rb', line 11 def initialize app, = {} @app = app @key = .fetch :key, 'rack.session' @secret = .fetch :secret, get_secret_errors() = .fetch :options_key, 'rack.session.options' @default_opts = DEFAULT_OPTS.merge!() end |
Instance Attribute Details
#request ⇒ Object (readonly)
Returns the value of attribute request.
9 10 11 |
# File 'lib/simple_session/base.rb', line 9 def request @request end |
#session ⇒ Object (readonly)
Returns the value of attribute session.
9 10 11 |
# File 'lib/simple_session/base.rb', line 9 def session @session end |
Instance Method Details
#call(env) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/simple_session/base.rb', line 47 def call env # Decrypt request session and store it extract_session env # Load session into app env load_environment env # Pass on request status, headers, body = @app.call env # Check session for changes and update if update_session if session_changed? # Encrypt and add session to headers add_session headers [status, headers, body] end |
#get_secret_errors(options) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/simple_session/base.rb', line 19 def get_secret_errors secret = [:secret] missing_msg = %[ SimpleSession requires a secret like this: use SimpleSession::Session, secret: 'some secret' ] short_msg = %[ SimpleSession require a secret with a minimum length of 32 use SimpleSession::Session, secret: SecureRandom.hex(32) ] raise ArgumentError, missing_msg unless secret raise ArgumentError, short_msg unless secret.length >= 32 end |
#new_session_hash ⇒ Object
43 44 45 |
# File 'lib/simple_session/base.rb', line 43 def new_session_hash { session_id: SecureRandom.hex(32) } end |
#req_options ⇒ Object
39 40 41 |
# File 'lib/simple_session/base.rb', line 39 def session[:options] if session end |
#req_session ⇒ Object
35 36 37 |
# File 'lib/simple_session/base.rb', line 35 def req_session request.[@key] if request end |