Sha256: 174606aae63299cbf6abf5d4d6366905f6acdf089ce13a472d35e95dfc0f43d1

Contents?: true

Size: 1.19 KB

Versions: 7

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

module GraphqlDevise
  module AdditionalControllerMethods
    extend ActiveSupport::Concern

    included do
      attr_accessor :client_id, :token, :resource
    end

    def gql_devise_context(*models)
      {
        current_resource: authenticate_model(*models),
        controller:       self
      }
    end

    def authenticate_model(*models)
      models.each do |model|
        set_resource_by_token(model)
        return @resource if @resource.present?
      end

      nil
    end

    def resource_class(resource = nil)
      # Return the resource class instead of looking for a Devise mapping if resource is already a resource class
      return resource if resource.respond_to?(:find_by)

      super
    end

    def set_resource_by_token(resource)
      set_user_by_token(resource)
    end

    def build_redirect_headers(access_token, client, redirect_header_options = {})
      {
        DeviseTokenAuth.headers_names[:'access-token'] => access_token,
        DeviseTokenAuth.headers_names[:client] => client,
        :config => params[:config],
        :client_id => client,
        :token => access_token
      }.merge(redirect_header_options)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
graphql_devise-2.0.0 lib/graphql_devise/concerns/additional_controller_methods.rb
graphql_devise-1.4.0 lib/graphql_devise/concerns/additional_controller_methods.rb
graphql_devise-1.3.0 lib/graphql_devise/concerns/additional_controller_methods.rb
graphql_devise-1.2.0 lib/graphql_devise/concerns/additional_controller_methods.rb
graphql_devise-1.1.1 lib/graphql_devise/concerns/additional_controller_methods.rb
graphql_devise-1.1.0 lib/graphql_devise/concerns/additional_controller_methods.rb
graphql_devise-1.0.1 lib/graphql_devise/concerns/additional_controller_methods.rb