Class: Rack::Tamperproof::Protector

Inherits:
Object
  • Object
show all
Defined in:
lib/rack-tamperproof.rb

Direct Known Subclasses

DeleteProtector, ExceptionProtector

Defined Under Namespace

Classes: DeleteProtector, ExceptionProtector

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, secret, postfix = '_key') ⇒ Protector

Returns a new instance of Protector.



23
24
25
26
27
# File 'lib/rack-tamperproof.rb', line 23

def initialize(name, secret, postfix = '_key')
  @name = name.to_s
  @secret = secret
  @postfix = postfix
end

Class Method Details

.sign(name, value, secret) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/rack-tamperproof.rb', line 33

def self.sign(name, value, secret)
  digest = Digest::SHA1.new
  digest.update(name)
  digest.update(value)
  digest.update(secret)
  digest.hexdigest
end

Instance Method Details

#add_secret_to_response(response, cookies) ⇒ Object



49
50
51
# File 'lib/rack-tamperproof.rb', line 49

def add_secret_to_response(response, cookies)
  response.set_cookie(secret_cookie_key, secret(cookies))
end

#secret(cookies) ⇒ Object



41
42
43
# File 'lib/rack-tamperproof.rb', line 41

def secret(cookies)
  self.class.sign(@name, cookies[@name], @secret)
end


29
30
31
# File 'lib/rack-tamperproof.rb', line 29

def secret_cookie_key
  "#{@name}#{@postfix}"
end

#valid?(request) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/rack-tamperproof.rb', line 45

def valid?(request)
  secret(request.cookies) == request.cookies[secret_cookie_key]
end