class FirebaseRubyAuth
Interacts with data from Firebase
Public Class Methods
new(firebase_project_id)
click to toggle source
# File lib/firebase_ruby_auth.rb, line 10 def initialize(firebase_project_id) @firebase_project_id = firebase_project_id @public_cert = GooglePublicCert.new end
Public Instance Methods
decode_token(token)
click to toggle source
token would be a user's ID token firebase.google.com/docs/auth/admin/verify-id-tokens This will either return a hash with user data, or an empty hash
# File lib/firebase_ruby_auth.rb, line 18 def decode_token(token) return {} if @public_cert.keys.empty? token_values = begin JWT.decode(token, nil, true, options).first rescue JWT::JWKError {} rescue JWT::DecodeError {} end valid?(token_values) ? token_values : {} end
Private Instance Methods
options()
click to toggle source
# File lib/firebase_ruby_auth.rb, line 31 def options { algorithms: ['RS256'], aud: @firebase_project_id, verify_aud: true, verify_iat: true, iss: "https://securetoken.google.com/#{@firebase_project_id}", verify_iss: true, jwks: @public_cert.keys } end
valid?(token_values)
click to toggle source
# File lib/firebase_ruby_auth.rb, line 47 def valid?(token_values) token_values['sub'].present? && token_values['auth_time'].present? && token_values['auth_time'].to_i < Time.now.utc.to_i end