class Proof::Token
Attributes
algorithm[R]
data[R]
expiration_date[R]
secret_key[R]
token[R]
Public Class Methods
from_data(data, secret_key=Rails.application.secrets.secret_key_base, algorithm='HS256', expiration_date=24.hours.from_now.to_i)
click to toggle source
# File lib/proof/token.rb, line 20 def self.from_data(data, secret_key=Rails.application.secrets.secret_key_base, algorithm='HS256', expiration_date=24.hours.from_now.to_i) # Must Clone Data Hash to Avoid Side Effects data_immutable = data.clone.merge({ exp: expiration_date }) token = JWT.encode(data_immutable, secret_key, algorithm) new(data_immutable, secret_key, algorithm, token) end
from_token(token, secret_key=Rails.application.secrets.secret_key_base, algorithm='HS256')
click to toggle source
# File lib/proof/token.rb, line 27 def self.from_token(token, secret_key=Rails.application.secrets.secret_key_base, algorithm='HS256') decoded = JWT.decode(token, secret_key) data = decoded[0] if algorithm != algorithm_from_header(decoded[1]) raise JWT::IncorrectAlgorithm.new("Payload algorithm is #{algorithm_from_header(decoded[1])} but #{algorithm} was used to Encrypt.") end new(data, secret_key, algorithm, token) end
new(data, secret_key, algorithm, token)
click to toggle source
# File lib/proof/token.rb, line 7 def initialize(data, secret_key, algorithm, token) # Convert Raw Hash Keys into Ruby Symbols @data = Hash.new data.each do |key, value| @data[key.to_sym] = value end @expiration_date = @data[:exp] @secret_key = secret_key @algorithm = algorithm @token = token end
Private Class Methods
algorithm_from_header(header)
click to toggle source
# File lib/proof/token.rb, line 36 def self.algorithm_from_header(header) return header['alg'] end
Public Instance Methods
expired?()
click to toggle source
# File lib/proof/token.rb, line 41 def expired? return @expiration_date < Time.now.to_i end
to_s()
click to toggle source
# File lib/proof/token.rb, line 45 def to_s return token end