-
Notifications
You must be signed in to change notification settings - Fork 36
/
confirm_account.rb
35 lines (30 loc) · 1.07 KB
/
confirm_account.rb
1
2
3
4
5
6
7
8
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
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)
resource.build_auth_url(
redirect_url,
redirect_headers(
client_and_token(resource.create_token),
redirect_header_options
)
)
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