class FirebaseTokenAuthentication::AccessToken

Constants

DECODE_OPTIONS

Attributes

certificate[R]
firebase_token[R]
key_id[R]

Public Class Methods

new(firebase_token, certificate = GoogleX509Certificate.new) click to toggle source
# File lib/firebase_token_authentication/access_token.rb, line 16
def initialize(firebase_token, certificate = GoogleX509Certificate.new)
  @firebase_token = firebase_token
  @certificate = certificate
  @key_id = decode(key: nil, verify_key: false)[1]["kid"]
end

Public Instance Methods

verify() click to toggle source
# File lib/firebase_token_authentication/access_token.rb, line 22
def verify
  decode(key: certificate.find(key_id))
end

Private Instance Methods

decode(key: nil, verify_key: true) click to toggle source
# File lib/firebase_token_authentication/access_token.rb, line 28
def decode(key: nil, verify_key: true)
  JWT.decode(firebase_token, key&.public_key, verify_key, decode_options)
rescue StandardError => e
  raise FirebaseTokenAuthentication::Error, e.message
end
decode_options() click to toggle source
# File lib/firebase_token_authentication/access_token.rb, line 34
def decode_options
  config_opts = {
    aud: FirebaseTokenAuthentication.config.firebase_project_id,
    iss: "https://securetoken.google.com/#{FirebaseTokenAuthentication.config.firebase_project_id}"
  }

  DECODE_OPTIONS.merge(config_opts)
end