Sha256: 3a7c5a01fb30b5eb7bcb621fe93c5c90d940d9a0a40fafb5968aa96dc633f6af
Contents?: true
Size: 1.63 KB
Versions: 6
Compression:
Stored size: 1.63 KB
Contents
# frozen_string_literal: true require 'open-uri' class FirebaseRepository < Ibrain::BaseRepository def initialize(record, params) super(nil, record) @private_key_json = load_private_file @firebase_owner_email = Ibrain::Auth::Config.firebase_owner_email @params = params end def generate_custom_token! iat = Time.now.to_i exp = 60.minutes.from_now.to_i uid = retrieve_uid_execution raise IbrainErrors::UnknownError.new I18n.t("ibrain.errors.custom_token.not_retrieve_uid") unless uid payload = { iss: firebase_owner_email, sub: firebase_owner_email, aud: Ibrain::Auth::Config.firebase_auth_url, iat: iat, exp: exp, uid: uid, claims: {} } JWT.encode payload, private_key, "RS256" end private attr_reader :private_key_json, :firebase_owner_email, :params def json_firebase JSON.parse(private_key_json, symbolize_names: true) end def private_key OpenSSL::PKey::RSA.new json_firebase[:private_key] end def load_private_file is_remote = Ibrain::Auth::Config.firebase_private_key_path.include?("http") if is_remote uri = URI.parse(Ibrain::Auth::Config.firebase_private_key_path) content = uri.open { |f| f.read } return content end File.open(Ibrain::Auth::Config.firebase_private_key_path).read end def retrieve_uid_execution if params[:access_token].present? return LineRepository.singleton.retrieve_uid_by_access_token(access_token: params[:access_token]) end LineRepository.singleton.retrieve_uid( code: params[:code], redirect_uri: params[:redirect_uri] ) end end
Version data entries
6 entries across 6 versions & 2 rubygems