Class: Generators::FirebaseAuth::ModelGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Defined in:
lib/generators/firebase_auth/model_generator.rb

Instance Method Summary collapse

Instance Method Details

#create_migration_fileObject



13
14
15
# File 'lib/generators/firebase_auth/model_generator.rb', line 13

def create_migration_file
  generate 'migration', "Create#{table_name.capitalize} email:string user_id:string"
end

#create_model_fileObject



9
10
11
# File 'lib/generators/firebase_auth/model_generator.rb', line 9

def create_model_file
  template 'model.rb.tt', File.join('app/models', class_path, "#{file_name}.rb")
end

#inject_authenticate_methodObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/generators/firebase_auth/model_generator.rb', line 17

def inject_authenticate_method
  inject_into_class "app/controllers/application_controller.rb", ApplicationController do
    <<-RUBY
      before_action :authenticate_#{file_name}

      private

      def authenticate_#{file_name}
        id_token = request.headers['Authorization']&.split(' ')&.last
        if id_token
          decoded_token = FirebaseAuthService::FirebaseAuthService.new(Rails.application.credentials.dig(:firebase, :project_id)).verify_id_token(id_token)
          if decoded_token
            @current_#{file_name} = #{class_name}.find_by(email: decoded_token['email'])
          end
        end
        render json: { error: 'Unauthorized' }, status: :unauthorized unless @current_#{file_name}
      end
    RUBY
  end
end