Class: GraphqlDevise::Resolvers::ConfirmAccount

Inherits:
Base
  • Object
show all
Defined in:
lib/graphql_devise/resolvers/confirm_account.rb

Instance Method Summary collapse

Instance Method Details

#resolve(confirmation_token:, redirect_url:) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/graphql_devise/resolvers/confirm_account.rb', line 9

def resolve(confirmation_token:, redirect_url:)
  check_redirect_url_whitelist!(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)
    resource
  else
    raise_user_error(I18n.t('graphql_devise.confirmations.invalid_token'))
  end
end