Class: Rack::Insight::ParamsSignature
- Inherits:
-
Object
- Object
- Rack::Insight::ParamsSignature
- Extended by:
- ERB::Util
- Defined in:
- lib/rack/insight/params_signature.rb
Instance Attribute Summary collapse
-
#request ⇒ Object
readonly
Returns the value of attribute request.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(request) ⇒ ParamsSignature
constructor
A new instance of ParamsSignature.
- #secret_key ⇒ Object
- #secret_key_blank? ⇒ Boolean
- #signature(params) ⇒ Object
- #signature_base(params) ⇒ Object
- #validate! ⇒ Object
Constructor Details
#initialize(request) ⇒ ParamsSignature
Returns a new instance of ParamsSignature.
24 25 26 |
# File 'lib/rack/insight/params_signature.rb', line 24 def initialize(request) @request = request end |
Instance Attribute Details
#request ⇒ Object (readonly)
Returns the value of attribute request
22 23 24 |
# File 'lib/rack/insight/params_signature.rb', line 22 def request @request end |
Class Method Details
.sign(request, hash) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/rack/insight/params_signature.rb', line 8 def self.sign(request, hash) #puts "ParamsSignature#sign called!: #{caller.first}" parts = [] hash.keys.sort.each do |key| parts << "#{key}=#{u(hash[key])}" end hancock = new(request).signature(hash) parts << "hash=#{u(hancock)}" parts.join("&") end |
Instance Method Details
#secret_key ⇒ Object
28 29 30 |
# File 'lib/rack/insight/params_signature.rb', line 28 def secret_key @request.env['rack-insight.secret_key'] end |
#secret_key_blank? ⇒ Boolean
32 33 34 |
# File 'lib/rack/insight/params_signature.rb', line 32 def secret_key_blank? secret_key.nil? || secret_key == "" end |
#signature(params) ⇒ Object
45 46 47 |
# File 'lib/rack/insight/params_signature.rb', line 45 def signature(params) Digest::SHA1.hexdigest(signature_base(params)) end |
#signature_base(params) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/rack/insight/params_signature.rb', line 49 def signature_base(params) hancock = [] hancock << secret_key params.keys.sort.each do |key| next if key == "hash" hancock << params[key].to_s end hancock.join(":") end |
#validate! ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/rack/insight/params_signature.rb', line 36 def validate! if secret_key_blank? raise SecurityError.new("Missing secret key") elsif request.params["hash"] != signature(request.params) #puts "request params hash: #{request.params}\nsignature: #{signature(request.params)}" raise SecurityError.new("Invalid query hash.") end end |