Class: Rack::Tamperproof
- Inherits:
-
Object
- Object
- Rack::Tamperproof
- Defined in:
- lib/rack-tamperproof.rb
Defined Under Namespace
Classes: Protector
Constant Summary collapse
- Tampered =
Class.new(RuntimeError)
Instance Method Summary collapse
- #call(env) ⇒ Object
- #delete_for(name, key = @default_key || raise) ⇒ Object
- #exception_for(name, key = @default_key || raise) ⇒ Object
-
#initialize(app, opts = nil, &block) ⇒ Tamperproof
constructor
A new instance of Tamperproof.
Constructor Details
#initialize(app, opts = nil, &block) ⇒ Tamperproof
Returns a new instance of Tamperproof.
78 79 80 81 82 83 |
# File 'lib/rack-tamperproof.rb', line 78 def initialize(app, opts = nil, &block) @app = app @default_key = opts && opts[:default_key] @protected_cookies = {} instance_eval(&block) end |
Instance Method Details
#call(env) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/rack-tamperproof.rb', line 85 def call(env) # detect cookies that are supposed to be tamper proof request = Rack::Request.new(env) request..each do |name, value| if @protected_cookies[name] @protected_cookies[name].validate(request) end end result = @app.call(env) response = Rack::Response.new(result[2], result[0], result[1]) = Rack::Utils.parse_query(response['Set-Cookie'], "\n") @protected_cookies.each do |name, protector| protector.add_secret_to_response(response, ) end response.to_a end |
#delete_for(name, key = @default_key || raise) ⇒ Object
73 74 75 |
# File 'lib/rack-tamperproof.rb', line 73 def delete_for(name, key = @default_key || raise) @protected_cookies[name.to_s] = Protector::DeleteProtector.new(name, key) end |
#exception_for(name, key = @default_key || raise) ⇒ Object
69 70 71 |
# File 'lib/rack-tamperproof.rb', line 69 def exception_for(name, key = @default_key || raise) @protected_cookies[name.to_s] = Protector::ExceptionProtector.new(name, key) end |