class Warden::CookieSession::EncryptedCookie

Attributes

encryptor[R]
secret[R]
store[R]

Public Class Methods

new(store:, cookie:, secret:) click to toggle source
# File lib/warden/cookie_session/encrypted_cookie.rb, line 5
def initialize(store:, cookie:, secret:)
  @store = store
  @cookie = cookie
  @secret = secret
  raise ArgumentError.new('secret must be 32 bytes') if @secret.length != 32

  @encryptor ||= ActiveSupport::MessageEncryptor.new(secret)
end

Public Instance Methods

clear(domain) click to toggle source
# File lib/warden/cookie_session/encrypted_cookie.rb, line 31
def clear(domain)
  store.delete(cookie, domain: domain)
end
get() click to toggle source
# File lib/warden/cookie_session/encrypted_cookie.rb, line 14
def get
  value = store[cookie]
  return nil unless value

  JSON(encryptor.decrypt_and_verify(value))
end
put(data, domain) click to toggle source
# File lib/warden/cookie_session/encrypted_cookie.rb, line 21
def put(data, domain)
  store[cookie] = {
    value:     encryptor.encrypt_and_sign(data.to_json),
    domain:    domain,
    secure:    true,
    http_only: true,
    httponly:  true
  }
end