Class: Utopia::Session::EncryptedCookie

Inherits:
Object
  • Object
show all
Defined in:
lib/utopia/session/encrypted_cookie.rb

Constant Summary collapse

RACK_SESSION =
"rack.session"
RACK_SESSION_OPTIONS =
"rack.session.options"

Instance Method Summary collapse

Constructor Details

#initialize(app, options = {}) ⇒ EncryptedCookie

Returns a new instance of EncryptedCookie.



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/utopia/session/encrypted_cookie.rb', line 15

def initialize(app, options={})
	@app = app
	@cookie = options[:cookie] || (RACK_SESSION + ".encrypted")
	@secret = Digest::SHA256.digest(options[:secret])

	@default_options = {
		:domain => nil,
		:path => "/",
		:expires_after => nil
	}.merge(options)
end

Instance Method Details

#call(env) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/utopia/session/encrypted_cookie.rb', line 27

def call(env)
	original_session = load_session(env).dup

	status, headers, body = @app.call(env)

	if original_session != env[RACK_SESSION]
		commit_session(env, status, headers, body)
	end

	return [status, headers, body]
end