promisepreston
9/7/2019 - 11:58 AM

json_web_token.rb

# lib/json_web_token.rb

class JsonWebToken
  HMAC_SECRET = Rails.application.secrets.secret_key_base

  def self.encode(payload, exp = 24.hours.from_now)
    payload[:exp] = exp.to_i
    JWT.encode(payload, HMAC_SECRET)
  end

  def self.decode(token)
    body = JWT.decode(token, HMAC_SECRET)[0]
    HashWithIndifferentAccess.new(body)
  rescue JWT::DecodeError
    raise 'Invalid token supplied'
  rescue JWT::ExpiredSignature
    raise 'Token has expired'
  end
end