Sha256: cf39baee3a5519b4370359dd91705b4dff3e6cfe93d0666d592b66d18ef6b88f

Contents?: true

Size: 1.15 KB

Versions: 4

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module GraphqlDevise
  module Resolvers
    class ConfirmAccount < Base
      argument :confirmation_token, String, required: true
      argument :redirect_url,       String, required: true

      def resolve(confirmation_token:, redirect_url:)
        resource = resource_class.confirm_by_token(confirmation_token)

        if resource.errors.empty?
          yield resource if block_given?

          redirect_header_options = { account_confirmation_success: true }

          redirect_to_link = if controller.signed_in?(resource_name)
            url = resource.build_auth_url(
              redirect_url,
              redirect_headers(
                client_and_token(resource.create_token),
                redirect_header_options
              )
            )
            resource.save!

            url
          else
            DeviseTokenAuth::Url.generate(redirect_url, redirect_header_options)
          end

          controller.redirect_to(redirect_to_link)
          { authenticatable: resource }
        else
          raise_user_error(I18n.t('graphql_devise.confirmations.invalid_token'))
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
graphql_devise-0.13.5 lib/graphql_devise/resolvers/confirm_account.rb
graphql_devise-0.13.4 lib/graphql_devise/resolvers/confirm_account.rb
graphql_devise-0.13.3 lib/graphql_devise/resolvers/confirm_account.rb
graphql_devise-0.13.2 lib/graphql_devise/resolvers/confirm_account.rb